【问题标题】:Jar run in Windows but not in LinuxJar 在 Windows 中运行,但在 Linux 中不运行
【发布时间】:2012-12-28 08:36:36
【问题描述】:

我用外部库制作了一个可运行的 jar。在 Windows 下,我使用 bat 文件来运行应用程序 (java -Djava.library.path=./dist/lib -cp ./dist/Navegador.jar; navegador.Main),它可以正常工作。

我创建了一个 sh 文件来在 Linux 下运行该应用程序,但尝试在终端中执行它时出现以下错误:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: chrriis/dj/nativeswing/NativeSwing

我的 Manifest.mf 是这样的:

Class-Path: lib/DJNativeSwing-SWT.jar lib/DJNativeSwing-SWTAPI.jar lib /DJNativeSwing-SWTCore.jar lib/MozillaInterfaces-1.8.1.3.jar lib/DJNa tiveSwing.jar lib/swt.jar

为什么这个 jar 在 Linux 下不起作用?

【问题讨论】:

  • 如何在linux上运行它?将您的 .sh 文件放在此处。
  • sh 文件就像蝙蝠一样:#!bin/bash java -Djava.library.path=./dist/lib -cp ./dist/Navegador.jar; navegador.Main
  • 删除./dist/Navegador.jar之后的;
  • 删除分号后出现同样的错误。也许我需要一个特殊的 sintaxis 来在 Linux 中运行 jar?

标签: java linux windows jar


【解决方案1】:

你有一个或两个lib 目录吗?你有

-Djava.library.path=./dist/lib

但你也有

 lib/DJNativeSwing.jar

这是否意味着您有一个 dist/liblib 目录,还是应该相同?

【讨论】:

  • 我有一个 lib 目录。主文件夹包含distsh。在dist 里面我有lib 文件夹和Runnable jar。在 lib 文件夹中,我拥有所有 jar 依赖项。
  • 在这种情况下,只使用dist/liblib 之一是正确的。
  • 我为此 #!bin/bash java -jar ./dist/Navegador.jar navegador.Main 更改了 sh 文件,终端返回相同的错误
  • 同目录类型ls -l lib/DJNativeSwing.jar
  • 已解决。在网上搜索,我找到了一个有类似问题的人的帖子。解决方案是添加在 Linux 中运行应用程序所需的依赖项 (JNA)。虽然错误消息说没有找到chrriis / dj / nativeswing / NativeSwing,但真正缺少的依赖项是JNA。
【解决方案2】:

您无法在 Linux 下运行该应用程序,因为您缺少本机库(在 linux 下称为 .so,在 Windows 下称为 .dll)。

【讨论】:

  • 我正在使用 Linux 的 NativeSwing jar 依赖项(不是我用于 Windows 应用程序的文件),所以你的答案是绝对错误的。
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多