我的公司正在转向使用ubuntu的目标架构;我们正在从windows迁移java应用程序。我们的第一个应用程序在ubuntu上遇到此错误(在win上运行良好):
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: > org/apache/cxf/jaxrs/lifecycle/ResourceProvider
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)
Caused by: java.lang.ClassNotFoundException: org.apache.cxf.jaxrs.lifecycle.ResourceProvider
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
... 7 more
这两个环境都运行Java1.8JDK/jre(不是ubuntu上的openjdk)。我们为git使用了一个内部的codecloud,所有内容都在win和ubuntu中更新。maven显示所有依赖项都已满足;我甚至可以扩展maven类,并可以看到resourceprovider类。
我读过spring和cxf的版本控制问题,但这是指cxf的版本比我们正在运行的版本旧,我没有看到任何东西表明为什么代码会在windows环境中运行,而不是在“nix环境”中运行。还有很多关于weblogic的讨论,我们在服务器端使用带有cxf的嵌入式jetty。这是一个独立的控制台应用程序,不使用容器,如果这很重要的话。
如有任何想法或建议,将不胜感激。
编辑:在eclipse中使用“作为java运行”时发生此错误。调试器甚至没有命中main中的第一行代码。
暂无答案!
目前还没有任何答案,快来回答吧!