Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jar可以在Windows中运行,但不能在Linux中运行_Java_Linux_Windows_Jar - Fatal编程技术网

Java Jar可以在Windows中运行,但不能在Linux中运行

Java Jar可以在Windows中运行,但不能在Linux中运行,java,linux,windows,jar,Java,Linux,Windows,Jar,我用外部库制作了一个可运行的jar。在Windows下,我使用一个bat文件来运行应用程序(java-Djava.library.path=./dist/lib-cp./dist/Navegador.jar;Navegador.Main),它工作正常 我创建了一个sh文件以在Linux下运行该应用程序,但在尝试在终端中执行时,我遇到了以下错误: 线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError中出现异常: chrris/dj/nativeswi

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

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

线程“AWT-EventQueue-0”java.lang.NoClassDefFoundError中出现异常: chrris/dj/nativeswing/nativeswing

我的Manifest.mf如下所示:

类路径: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下工作?

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

-Djava.library.path=./dist/lib
但你也有

 lib/DJNativeSwing.jar

这是否意味着您有一个
dist/lib
lib
目录,或者它们应该是相同的?

您不能在Linux下运行应用程序,因为您缺少一个本机库(在Linux下称为
。所以在Linux下称为
,在Windows下称为
.dll

如何在Linux上运行它?Cat你的.sh文件在这里。sh文件就像蝙蝠一样:
#!bin/bashjava-Djava.library.path=./dist/lib-cp./dist/Navegador.jar;navegador.Main
删除
after
/dist/Navegador.jar
删除分号后,我得到了相同的错误。也许我需要一个特殊的sintaxis来在Linux中运行jar?我有一个lib目录。主文件夹包含
dist
sh
。在
dist
内部,我有
lib
文件夹和
Runnable jar
。在
lib
文件夹中,我有我所有的jar依赖项。在这种情况下,使用
dist/lib
lib
中的一个是正确的。我为此
更改了sh文件!bin/bash java-jar./dist/Navegador.jar Navegador.Main
和terminal从相同的目录类型返回相同的错误
ls-l lib/DJNativeSwing.jar
。在网上搜索时,我发现了一个有类似问题的人发的帖子。解决方案是添加在Linux中运行应用程序所需的依赖项(JNA)。虽然错误消息说找不到
chrriis/dj/nativeswing/nativeswing
,但缺少的真正依赖项是JNA。我使用的是Linux的nativeswing jar依赖项(不是我用于Windows应用程序的文件),因此您的回答绝对错误。