1 回答
TA贡献1853条经验 获得超18个赞
对于偶然发现这篇文章的人来说,混淆的原因以及这对我不起作用的原因是因为我没有考虑到我是在其他地方而不是在根目录中创建我的罐子这一事实驱动器,因此 jar 结构将如下所示:
Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class
Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class
以上是我使用以下命令创建后的 jar 结构:
C:\Users\SomeUser>jar cfve tryapp.jar MainApp C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class
现在为了运行这个 jar,你必须改变上面的命令,而不是只有 MainApp,你必须像这样放置整个项目结构:
C:\Users\SomeUser>jar cfve tryapp.jar Users.SomeUser.Desktop.LearningJava.tryproject.packageOne.MainApp C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageOne\MainApp.class C:\Users\SomeUser\Desktop\LearningJava\tryproject\packageTwo\Greeter.class
并且您还必须修改每个 .java 类文件的包以类似于我刚刚在命令中修改的结构。因此,而不是仅仅的package packageOne;或package packageTwo;你需要重写他们这样package Users.SomeUser.Desktop.LearningJava.tryproject.packageOne;和package Users.SomeUser.Desktop.LearningJava.tryproject.packageTwo;。进口也是如此。现在,如果您修改了所有 .java 文件并重新编译它们,您应该能够使用我之前提到的命令指令运行 jar。
但是更好的解决方案和更简单的解决方案就像上面提到的@Prashant Gupta。
例如,只需使用:
jar cfve tryapp.jar packageOne.MainApp -C C:\Users\SomeUser\Desktop\LearningJava\tryproject\ .
但是它将获取该目录中的所有文件,因此可能只有一个单独的目录用于二进制文件或应用程序所需的所有文件,而另一个用于源文件。
添加回答
举报