Problem with VERSION in default package
hosier.david Nov 5, 2009 8:59 PMWe have a NetBeans client application which involves some JMS client code. We just migrated to JBoss 5.1 (with JBoss Messaging 1.4.3), and now we get JMS failures because NetBeans does not allow access to things in the default package. You can see from the following stack trace the JBM code does in fact load version information from a file named VERSION at the root of the jboss-messaging-client.jar. Sorry...the guy who pasted this to me didn't drag over far enough in the Windows console window, so some of the text is truncated on the right side.
[exec] java.lang.IllegalStateException: You are trying to access file: VERSION from the default package. Please see http /www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/classpath.html#default_package [exec] at org.netbeans.ProxyClassLoader.printDefaultPackageWarning(ProxyClassLoader.java:539) [exec] at org.netbeans.ProxyClassLoader.getResource(ProxyClassLoader.java:312) [exec] at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1168) [exec] at org.jboss.messaging.util.Version.load(Version.java:130) [exec] at org.jboss.messaging.util.Version.<init>(Version.java:56) [exec] at org.jboss.messaging.util.Version.instance(Version.java:69) [exec] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.getVersionToUse(ClientConnectionFactoryDeleg e.java:91) [exec] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.org$jboss$jms$client$delegate$ClientConnecti FactoryDelegate$getClientAOPStack$aop(ClientConnectionFactoryDelegate.java:220) [exec] at org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate.getClientAOPStack(ClientConnectionFactoryDel ate.java) [exec] at org.jboss.jms.client.ClientAOPStackLoader.load(ClientAOPStackLoader.java:75) [exec] at org.jboss.jms.client.JBossConnectionFactory.createConnectionInternal(JBossConnectionFactory.java:192) [exec] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:115) [exec] at org.jboss.jms.client.JBossConnectionFactory.createTopicConnection(JBossConnectionFactory.java:109) [exec] at com.osi.solutions.framework.services.logging.client.LogTopicPublisher.initConnectionStuff(LogTopicPublishe java:85) [exec] at com.osi.solutions.framework.services.logging.client.LogTopicPublisher.init(LogTopicPublisher.java:59) [exec] at com.osi.solutions.framework.services.logging.client.LogPublisherFactory.getPublisher(LogPublisherFactory.j a:56) [exec] at com.osi.solutions.framework.services.logging.client.JMSLogAppender.append(JMSLogAppender.java:64) [exec] at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230) [exec] at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65) [exec] at org.apache.log4j.Category.callAppenders(Category.java:203) [exec] at org.apache.log4j.Category.forcedLog(Category.java:388) [exec] at org.apache.log4j.Category.info(Category.java:663) [exec] at com.osi.solutions.framework.services.logging.common.RemoteLoggerFactory.logInfoMessage(RemoteLoggerFactory ava:45) [exec] at com.osi.solutions.platform.main.login.Installer.initLogger(Installer.java:432) [exec] at com.osi.solutions.platform.main.login.Installer.restored(Installer.java:127) [exec] at org.netbeans.core.startup.NbInstaller.loadCode(NbInstaller.java:419) [exec] at org.netbeans.core.startup.NbInstaller.load(NbInstaller.java:340) [exec] at org.netbeans.ModuleManager.enable(ModuleManager.java:906) [exec] at org.netbeans.core.startup.ModuleList.installNew(ModuleList.java:428) [exec] at org.netbeans.core.startup.ModuleList.trigger(ModuleList.java:364) [exec] at org.netbeans.core.startup.ModuleSystem.restore(ModuleSystem.java:276) [exec] at org.netbeans.core.startup.Main.getModuleSystem(Main.java:165) [exec] at org.netbeans.core.startup.Main.start(Main.java:312) [exec] at org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:110) [exec] at java.lang.Thread.run(Thread.java:619)
We subsequently attempt to send JMS messages and that code fails with the following exception:
[exec] Caused by: java.lang.RuntimeException: org.jboss.aop.advice.org.jboss.jms.client.container.SessionAspect_z_handle edeliver_22700073: frozen class (cannot edit) [exec] at javassist.ClassPool.checkNotFrozen(ClassPool.java:568) [exec] at javassist.ClassPool.makeClass(ClassPool.java:746) [exec] at javassist.ClassPool.makeClass(ClassPool.java:731) [exec] at org.jboss.aop.instrument.TransformerCommon.makeClass(TransformerCommon.java:239) [exec] at org.jboss.aop.advice.PerVmAdvice.generateInterceptor(PerVmAdvice.java:145) [exec] at org.jboss.aop.advice.PerVmAdvice.generateOptimized(PerVmAdvice.java:56) [exec] at org.jboss.aop.advice.AdviceFactory.create(AdviceFactory.java:106) [exec] at org.jboss.aop.Advisor.createInterceptorChain(Advisor.java:1323) [exec] at org.jboss.aop.Advisor.pointcutResolved(Advisor.java:1937) [exec] at org.jboss.aop.MethodMatchInfo.applyBinding(MethodMatchInfo.java:152) [exec] at org.jboss.aop.MethodMatchInfo.simplePopulateBindings(MethodMatchInfo.java:113) [exec] at org.jboss.aop.MethodMatchInfo.populateBindings(MethodMatchInfo.java:96) [exec] at org.jboss.aop.Advisor.finalizeMethodChain(Advisor.java:1548) [exec] at org.jboss.aop.ClassAdvisor.finalizeChains(ClassAdvisor.java:741) [exec] at org.jboss.aop.ClassAdvisor.createInterceptorChains(ClassAdvisor.java:609) [exec] at org.jboss.aop.ClassAdvisor$1.run(ClassAdvisor.java:306) [exec] at java.security.AccessController.doPrivileged(Native Method) [exec] at org.jboss.aop.ClassAdvisor.attachClass(ClassAdvisor.java:276) [exec] at org.jboss.aop.AspectManager.initialiseClassAdvisor(AspectManager.java:748) [exec] at org.jboss.aop.AspectManager.getAdvisor(AspectManager.java:729) [exec] at org.jboss.jms.client.delegate.ClientSessionDelegate.<clinit>(ClientSessionDelegate.java) [exec] ... 55 more
I suspect the two are related, but I'm still tracing through the code to see if I can tell for sure. I guess I'm looking for any suggestions on how to get around this issue. It seems like the ideal solution is to move the VERSION file into a package in the jar, but maybe there's something I don't understand. As far as I can tell from looking at the code, rebuilding the jar with the VERSION file in a package will not work. I think I would need to also change the Version.instance() line 69 to include that package
singleton = new Version("VERSION");
Hopefully someone will have some helpful suggestions. Thanks.