我正在尝试基于两个单独的Java包创建一个JAR。我可以在Eclipse中编译和运行,但无法从命令行获取代码。我已经正确配置了Ant和JDK,因为我有一个几乎正常工作的Ant构建脚本。唯一的问题是,当我尝试执行它时,生成的JAR会抛出 ClassNotFoundException 。
存档包含正确目录层次结构中两个包中的所有 .class 文件。无论如何,JAR将抛出上述异常。
我们的想法是从包含两个软件包的顶级目录运行此脚本。
以下是我的构建脚本中的相关行:
<manifest file="MANIFEST.MF">
<attribute name="Built-By" value="XBigTK13X"/>
<attribute name="Main-Class" value="com.main.MainClass"/>
<attribute name="Class-Path" value="./com/main/ ./secondpackage/shapes/" />
</manifest>
<jar destfile="App.jar"
basedir="./bin"
includes="**/*.class"
manifest="MANIFEST.MF"
excludes="App.jar"
/>
答案 0 :(得分:1)
JAR一直都是正确的。抛出此错误是因为我在创建JAR后尝试使用以下命令运行JAR:
java MainClass
我现在意识到我需要使用以下命令显式地定位JAR:
java -jar MainClass.jar
答案 1 :(得分:0)
查看生成的JAR文件,以确保两个包具有来自根的正确路径。清单中的Class-Path语句可能与包含.class文件的文件夹的结构不匹配。
通过使用zip util打开JAR来验证它。