为什么我的 jar 适用于 windows 而不是 linux

Why my jar works on windows and not on linux

我正在开发 Javafx 应用程序。我用 intellij 和 artifact 创建了 jar。该罐子在 Windows 上运行良好。但是,当我 运行 它在 linux 上时,它显示此错误消息:

Erreur : impossible to find or load the main class view.View
Caused by : java.lang.NoClassDefFoundError: javafx/application/Application

这可能是一个愚蠢的错误,但我已经坚持了很长时间...... 我在互联网上没有找到任何可以帮助我的东西所以如果你有想法或有用 link 我很感兴趣

正如您已经说过的,Jar 在 Windows 上工作正常,因此打包正常。

Linux 上唯一可能出错的可能是以下之一:

  1. 你的 classname 参数有误
  2. 应用程序的class路径指定不正确
  3. 错误的目录在class路径
  4. 子目录路径与 FQN 不匹配
  5. class路径中缺少依赖项
  6. class 声明在错误的包中

也可能是版本不匹配

在您的终端上输入以下内容 -

javac -version

如果您得到 javac 1.6.0_10 或更高版本作为输出,那么您将必须执行以下步骤。如果你没有得到上面的输出,你将不得不卸载并重新安装 java.

显示的版本为 1.6 时执行的步骤。0_10 或更高版本 创建符号链接-

ln -s /usr/local/java /usr/local/jdk1.6.0_10

完成后,将以下内容添加到您的 .bashrc 文件

export JAVA_HOME=/usr/local/jdk1.6.0_10 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

对于Ref

您很可能缺少 JavaFX 的实现。在大多数 Linux 发行版中,JavaFX 是与 JDK 分开的包。该软件包很可能称为 openjfx 或类似名称。

如果您使用的是 Debian 或基于 Debian 的发行版,例如 Ubuntu,您应该能够通过 运行:

安装 openjfx

$ sudo apt-get install openjfx