【问题标题】:Why In jitsi i am not able to access class of one package into another package its throws ClassNotFoundException?为什么在 jitsi 中我无法将一个包的类访问到另一个包中抛出 ClassNotFoundException?
【发布时间】:2016-03-14 07:45:47
【问题描述】:

任何人帮助我, 我将包net.java.sip.communicator.impl.gui.main.account 的一个方法NewAccountDialog 调用到另一个包net.java.sip.communicator.plugin.simpleaccregSimpleAccountRegistrationActivator 类中,但它会引发以下异常......

java.lang.NoClassDefFoundError: net/java/sip/communicator/impl/gui/main/account/NewAccountDialog 在 net.java.sip.communicator.plugin.simpleacreg.SimpleAccountRegistrationActivator$LoginFrame$1.actionPerformed(SimpleAccountRegistrationActivator.java:302) 在 javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 在 javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(未知来源)在 javax.swing.DefaultButtonModel.setPressed(未知来源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在 java.awt.Component.processMouseEvent(未知源)在 javax.swing.JComponent.processMouseEvent(未知来源)在 java.awt.Component.processEvent(未知来源)在 java.awt.Container.processEvent(未知来源)在 java.awt.Component.dispatchEventImpl(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.LightweightDispatcher.retargetMouseEvent(未知来源)在 java.awt.LightweightDispatcher.processMouseEvent(未知来源)在 java.awt.LightweightDispatcher.dispatchEvent(未知来源)在 java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Window.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent(未知来源)在 java.awt.EventQueue.dispatchEventImpl(未知来源)在 java.awt.EventQueue.access$300(未知来源)在 java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue$4.run(未知源)在 java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源)在 java.awt.EventQueue.dispatchEvent(未知源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(未知 来源)在 java.awt.EventDispatchThread.pumpEvents(未知来源) 在 java.awt.EventDispatchThread.pumpEvents(Unknown Source) 在 java.awt.EventDispatchThread.run(Unknown Source) 原因: java.lang.ClassNotFoundException: net.java.sip.communicator.impl.gui.main.account.NewAccountDialog 不是 由 net.java.sip.communicator.plugin.simpleacreg [155] 在 org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1550) 在 org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:77) 在 org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1988) 在 java.lang.ClassLoader.loadClass(Unknown Source) ... 37 更多

【问题讨论】:

  • 那么你应该展示你是如何调用那个方法的

标签: java


【解决方案1】:

Jiti 使用 OSGI 框架和 Apache Felix 客户端。所以基本上当你在 build.xml 上应用运行命令时,它会创建 jar 包。

现在当类在编译时可用但在运行时不可用时,NoClassDefFoundError 上升。所以,由于 jars 的包装,它们两个类都会放在不同的 jars 中。所以,这个错误上升了。

解决方案:现在猜测错误是通过在 B 类之外导入由 A 类引发的。

       find Class A's parent package and search for its manifest file if you are not able to find its manifest file than go to parent of that package. Continue this steps until you find its manifest file.
       In manifest file import package of Class B.

       find Class B's parent package and search for its manifest file if you are not able to find its manifest file than go to parent of that package. Continue this steps until you find its manifest file. 
       In manifest file export package of Class B.

 there are some rules for editing manifest file. So,before editing please read it .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2013-11-25
    相关资源
    最近更新 更多