情况是这样的:
首先我有两个工程 A和B
A是服务器端的核心代码 B是A的一些接口
    将B打包(jar包),没有任何error和警告
    将B包引入到A的工程中,在A中实习B的接口
    A中也没有错误,服务器端可以运行
    将A打包
新建一个Axis2 Server Archiver,此时问题就出现了 error log的内容是:
Problems occurred when invoking code from plug-in: "org.eclipse.jface".
java.lang.NoClassDefFoundError: com/travelsky/eterm/AgentEvents
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at com.travelsky.llsp.ClientOperation.<init>(ClientOperation.java:6)
at com.travelsky.llsp.ClientOperation.<clinit>(ClientOperation.java:7)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.apache.axis2.tool.service.eclipse.ui.ServiceXMLGenerationPage.updateTable(ServiceXMLGenerationPage.java:241)
at org.apache.axis2.tool.service.eclipse.ui.ServiceXMLGenerationPage.createControl(ServiceXMLGenerationPage.java:160)
at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:170)
at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:734)
at org.eclipse.jface.wizard.WizardDialog.setWizard(WizardDialog.java:1162)
at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1221)
at org.eclipse.jface.wizard.WizardDialog.access$4(WizardDialog.java:1218)
at org.eclipse.jface.wizard.WizardDialog$6.run(WizardDialog.java:1207)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1205)
at org.eclipse.ui.internal.dialogs.NewWizardSelectionPage.advanceToNextPageOrFinish(NewWizardSelectionPage.java:71)
at org.eclipse.ui.internal.dialogs.NewWizardNewPage$1.doubleClick(NewWizardNewPage.java:354)
at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:824)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:822)
at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1421)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1225)
at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:238)
at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:235)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:296)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.ui.internal.handlers.WizardHandler$New.executeHandler(WizardHandler.java:254)
at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:274)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
Caused by: java.lang.ClassNotFoundException: com.travelsky.eterm.AgentEvents
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 java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 78 more怎么都找不到问题在哪,
接下来我新建一个Test测试工程,
将B包在Test中引用,最后将Test打包(jar),新建一个Axis2 Server Archiver,将Test.jar引入,完全可以生产aar文件。
这样的的话B工程项目应该是没有问题的 但是为什么会有java.lang.NoClassDefFoundError: com/travelsky/eterm/AgentEvents
这样的异常了
直到昨天上午还是正常的,给服务端的程序加了个单利的模式,之后就出现了如上所述的问题,本人经过重装系统,换了个myeclipse 9.0 重装了axis2的插件,结构还是一样,还请高手们大发慈悲之心 可怜可怜我吧!

解决方案 »

  1.   

    java.lang.NoClassDefFoundError: com/travelsky/eterm/AgentEvents
    1先转换成.aar文件  
    2放在axis中service目录下
    3启动就ok
      

  2.   

    window --> Preference -> java ->Compiler 把JDK换成1.5 试试
    我以前也遇到过类似的问题,在我朋友机器上好用,但在我机器上也报找不到类,后来就这样设置一下就好了
      

  3.   


    什么意思 这个异常就是我在转换aar的时候抛出的 没法进行转换啊
      

  4.   


    jdk的版本必须得与eclipse的axis2的插件版本一致,如果换成1.5的 那插件也得换了,昨天还是好的 就是我改了点东西(将部分类改为单利模式了)就抛这个异常了 
      

  5.   

    补充:
    在抛出的异常中有:
    at com.travelsky.llsp.ClientOperation.<init>(ClientOperation.java:6)
     at com.travelsky.llsp.ClientOperation.<clinit>(ClientOperation.java:7)
    说明在我的类里面有问题
    ClientOperation类中的第六行和第七行分别是:
    private LLSPCmdOperation operation = LLSPCmdOperation.getInstance();
    private static ClientOperation clientOperation = new ClientOperation();LLSPCmdOperation类的构造方法是:注意此类实现了AgentEvents接口(此接口被封装为jar包)
    public class LLSPCmdOperation implements AgentEvents{
    private static LLSPCmdOperation  llspCmdOperation = new LLSPCmdOperation();;
    private LLSPCmdOperation(){}

    //实现单利模式,每个类只能被实例化一个对象
    public static synchronized  LLSPCmdOperation getInstance()
    {
    if(llspCmdOperation == null)
    {
    llspCmdOperation = new LLSPCmdOperation();
    }
    return llspCmdOperation;
    }
         }AgentEvents接口为:
    public interface AgentEvents {
    void OnReceivedData(String data);
    }clientOperation 类的构造方法是:
    public class ClientOperation {
            //抛出的异常显示这两句有问题
    private LLSPCmdOperation operation = LLSPCmdOperation.getInstance();(第六行)
    private static ClientOperation clientOperation = new ClientOperation();(第七行)
    private ParseData parseData = null;
    private SendData sendData = null; private ClientOperation() {
    operation = LLSPCmdOperation.getInstance();
    parseData = ParseData.getInstance();
    sendData = SendData.getInstance();
    }
    public static synchronized ClientOperation getInstance()
    {
    if(clientOperation == null)
    {
    clientOperation = new ClientOperation();
    }
    return clientOperation;
    }
    }这写到底会有说明问题