我使用Gradle构建框架构建了我的项目并生成了一个JAR文件。但是,在这种情况下,输出的jar文件无法加载主类(miner.Tracker)中的主要方法。
正如我之前提到的,使用-jar
选项运行失败。
$ java -jar Backtracker.jar
Error: Could not find or load main class miner.Tracker
我也尝试使用-cp
选项直接运行类,但是失败了。
$ java -cp Backtracker.jar miner.Tracker
Error: Could not find or load main class miner.Tracker
最后,我解压了 jar 文件并从内部调用了类。这一次,成功找到并运行了带有 main 方法的类。
$ mkdir classes
$ cd classes
$ classes $ tar xvf ../Backtracker.jar
x META-INF/
x META-INF/MANIFEST.MF
x CHANGELOG.md
x com/
1. ...
classes $ java miner.Tracker
2021-04-12 22:47:48.008 | Logging started
...
以下是
META-INF/MANIFEST.MF
文件的内容。Manifest-Version: 1.0
Implementation-Title: BackTracker
Implementation-Version: 1.9.xx
Specification-Title: release
Specification-Version: 1.9.xx
Main-Class: miner.Tracker
我使用的是 Oracle Java 1.8 版本来运行它。
$ java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
感谢您的帮助。
更新:
$ tar tvf Backtracker.jar |grep miner\/Tracker
-rw-r--r-- 0 0 0 2175 Apr 14 20:38 miner/TrackerUtil.class
-rw-r--r-- 0 0 0 40963 Apr 14 20:38 miner/Tracker.class
miner.Tracker
的类,它只打印“Hello World”?你不觉得这样更容易进行故障排除吗? - Olivier