【问题标题】:java errors that don't occur on Windows, but do in Ubuntu在 Windows 上不会发生,但在 Ubuntu 中会发生的 java 错误
【发布时间】:2021-09-18 08:42:21
【问题描述】:

我的公司正在转向使用 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

两个环境都运行 java 1.8 jdk/jre(不是 Ubuntu 上的 OpenJDK)。我们为 git 使用内部 CodeCloud,一切都在 Win 和 Ubuntu 中更新。 Maven 显示所有依赖项都已满足;我什至可以扩展 maven 类,并且可以看到 ResourceProvider 类。

我已阅读有关 Spring 和 CXF 的版本控制问题,但这是指比我们运行的版本更旧的 CXF 版本,我没有看到任何表明代码将在 Windows 环境中运行的原因,但不是'尼克斯环境。还有很多关于 WebLogic 的讨论,我们在服务器端使用带有 CXF 的嵌入式 Jetty。这是一个独立的控制台应用程序,不使用容器,如果这很重要的话。

任何想法或提示将不胜感激。

编辑:在 Eclipse 中使用“run as java”会发生此错误。调试器甚至没有命中 main 中的第一行代码。

【问题讨论】:

  • 我们也不应该忘记所有这些微小的差异;小路 :/; 、反斜杠/斜杠、区分大小写、权限。
  • @joop 你是对的。我已经仔细检查了代码和资源文件中的文件系统路径。
  • 请编辑您的问题并添加您的产品是如何打包和启动的? (jar 集?传统的类路径?uber-jar?直接命令行?启动它的脚本?启动它的包装器库?等等) - 这个特定问题的过去答案是 uber-jar 打包错误。
  • @JoakimErdfelt 按要求进行了编辑。这是在 eclipse 中使用“run as java”发生的

标签: java maven ubuntu cxf embedded-jetty


【解决方案1】:

我重新开始使用这台机器并且能够让它运行。我相信我在 linux 上安装 Oracle JDK 的“操作方法”很糟糕,或者我遗漏了命令

update-alternatives - 安装 ... javac

update-alternatives - 安装 ... javaws

我应该在执行这些步骤时更加注意,以便提供更好的解决方案,但实际上,我只是不记得第一次输入这些命令。

【讨论】:

    猜你喜欢
    • 2013-12-14
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多