1
這是在我的程序最後一次不成功運行之後。我注意到,文件的大小發生了變化,我可以不再運行的Java類爲我的程序:JAR文件在執行期間被修改
[email protected] ~
$ ls -l lifecycle-0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 24740243 Jun 4 20:48 lifecycle-0.1-SNAPSHOT.jar
這是後我複製原始的JAR文件的新副本:
[email protected] ~
$ ls -l lifecycle-0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 24833475 Jun 4 20:55 lifecycle-0.1-SNAPSHOT.jar
我然後運行Java命令:
[email protected] ~
$ java -cp lifecycle-0.1-SNAPSHOT.jar com.abc.lifecycle.cli.LifecycleManagerCli -dm web 0001 lm2-dom0.sfbay.abc.com ZONE /path/to/bits
Jun 4, 2009 8:55:51 PM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org[email protected]186c6b2: display name [org[email protected]186c6b2]; startup date [Thu Jun 04 20:55:51 GMT+00:00 2009]; root of context hierarchy
Jun 4, 2009 8:55:51 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [lifecycle_lite.xml]
Jun 4, 2009 8:55:51 PM org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
INFO: Bean factory for application context [org[email protected]186c6b2]: org.s[email protected]88e2dd
Jun 4, 2009 8:55:51 PM org.springframework.core.io.support.PropertiesLoaderSupport loadProperties
INFO: Loading properties file from class path resource [lifecycle.properties]
Jun 4, 2009 8:55:51 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.s[email protected]88e2dd: defining beans [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,com.abc.lifecycle.util.LoggingConfigurer#0,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,txAdvice,lifecycleOperations,org.springframework.aop.support.DefaultBeanFactoryPointcutAdvisor#0,dataSource,hibernateSessionFactory,moduleDefinitionDao,moduleHostDao,moduleInstanceDao,physicalHostDao,serviceDefinitionDao,serviceInstanceDao,numericOffsetDao,virtualHostDao,broker,jmsConnectionFactory,lifecycleMessageQueue,lifecycleMessageXmlConverter,lifecycleMessageListener,lifecycleMessageListenerContainer,jmsTemplate,lifecycleProcessor,statusChecker,lifecycleComponentBuilder,lifecycleManagerInitializer,lifecycleManagerCli]; root of factory hierarchy
Hibernate:
insert
into
SERVICE_INSTANCE
(CREATED_DATE, OPTIMISTIC_LOCKING_VERSION, UPDATED_DATE, MODULE_INSTANCE_ID, serviceDefinition_ENTITY_ID)
values
(?, ?, ?, ?, ?)
Hibernate:
delete
from
NUMERIC_OFFSET
where
ENTITY_ID=?
and OPTIMISTIC_LOCKING_VERSION=?
Exception in thread "lifecycleMessageListenerContainer-1" java.lang.NoClassDefFoundError: org/springframework/jms/support/JmsUtils
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.clearResources(DefaultMessageListenerContainer.java:1024)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:887)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: org.springframework.jms.support.JmsUtils
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 3 more
在這一點上,我用Ctrl-C殺死它:
^CException in thread "ActiveMQ ShutdownHook" java.lang.NoClassDefFoundError: org/apache/activemq/broker/TransportConnection$3
at org.apache.activemq.broker.TransportConnection.stopAsync(TransportConnection.java:920)
at org.apache.activemq.broker.TransportConnection.stop(TransportConnection.java:902)
at org.apache.activemq.util.ServiceStopper.stop(ServiceStopper.java:41)
at org.apache.activemq.broker.TransportConnector.stop(TransportConnector.java:270)
at org.apache.activemq.util.ServiceSupport.dispose(ServiceSupport.java:43)
at org.apache.activemq.transport.vm.VMTransportFactory.stopped(VMTransportFactory.java:226)
at org.apache.activemq.broker.BrokerService.stop(BrokerService.java:518)
at org.apache.activemq.broker.BrokerService.containerShutdown(BrokerService.java:1754)
at org.apache.activemq.broker.BrokerService$4.run(BrokerService.java:1732)
Caused by: java.lang.ClassNotFoundException: org.apache.activemq.broker.TransportConnection$3
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 9 more
然後你就可以看到JAR文件已被更改:
[email protected] ~
$ ls -l lifecycle-0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root 24740243 Jun 4 20:56 lifecycle-0.1-SNAPSHOT.jar
我可以找到JmsUtils類,它是在抱怨我的Maven倉庫中的ActiveMQ TransportConnection類,我還有什麼可嘗試一下呢?
[email protected] ~
$ jar tf lifecycle-0.1-SNAPSHOT.jar | grep JmsUtils
org/springframework/jms/support/JmsUtils.class
[email protected] ~
$ jar tf lifecycle-0.1-SNAPSHOT.jar | grep TransportConnection
org/apache/activemq/broker/MapTransportConnectionStateRegister.class
org/apache/activemq/broker/SingleTransportConnectionStateRegister.class
org/apache/activemq/broker/TransportConnection$1.class
org/apache/activemq/broker/TransportConnection$2.class
org/apache/activemq/broker/TransportConnection$3.class
org/apache/activemq/broker/TransportConnection.class
org/apache/activemq/broker/TransportConnectionState.class
org/apache/activemq/broker/TransportConnectionStateRegister.class
org/apache/activemq/broker/jmx/ManagedTransportConnection.class
在執行期間可以修改JAR文件的狀態是什麼?如果我從遠程機器上連接一個調試器 - 如果這有什麼影響(我認爲不會)?
在此先感謝。
- 詹姆斯
當我創建文件444或400權限時,會發生同樣的事情。什麼給 - 文件只能讀取時如何寫入? – 2009-06-05 07:15:22