我正在使用Maven生成一个可运行的jar文件,其中包括所有依赖项(复制到单独的文件夹中)。 我在Windows 10机器上使用jdk 1.8运行mvn package。 在mvn运行之后,如果我打开cmd并运行java -jar instagramBot.jar,则一切正常。 Maven生成结果的文件夹(target)与安装了oracle-jdk-1.8的Ubuntu机器同步。 但是,如果在Ubuntu上打开shell并运行相同的命令,则结果为:Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: com/tomatechines/instagramapi/services/exception/InstagramException。然后会打印JVM堆栈跟踪,并导致程序崩溃。
我已经仔细检查了包含
我还检查了可能出现在jar文件名中的任何特殊字符,但是没有发现任何问题。
堆栈跟踪对错误没有进一步的解释:
==============更新============
我使用的所有库都是jar文件。没有DLL或特定于操作系统的文件。
我尝试通过Eclipse导出可运行的jar文件,并将所有库打包到一个单独的jar文件中(58MB),它在Ubuntu上正常工作...我不想使用这种方法,因为我的代码将会经常更改,而我使用的库不会变化,但是如果我将所有内容打包到一个单独的jar中,每次修复小错误时,我都需要重新同步58MB,尽管Eclipse处理导出jar的过程非常不方便。
我已经仔细检查了包含
com/tomatechines/instagramapi/services/exception/InstagramException
的jar包是否存在于类路径中,并且还存在于Ubuntu机器的库文件夹中。但是错误仍然发生。我还检查了可能出现在jar文件名中的任何特殊字符,但是没有发现任何问题。
堆栈跟踪对错误没有进一步的解释:
有人有任何想法是什么可能或者还应该检查什么来确定问题吗?错误:发生了JNI错误,请检查您的安装并重试
==============更新============
我使用的所有库都是jar文件。没有DLL或特定于操作系统的文件。
我尝试通过Eclipse导出可运行的jar文件,并将所有库打包到一个单独的jar文件中(58MB),它在Ubuntu上正常工作...我不想使用这种方法,因为我的代码将会经常更改,而我使用的库不会变化,但是如果我将所有内容打包到一个单独的jar中,每次修复小错误时,我都需要重新同步58MB,尽管Eclipse处理导出jar的过程非常不方便。