2015-04-12 46 views
-1

我刚写了Java控制台项目,我将其打包为jar文件。我GOOGLE了很多,发现不同的解决方案,如(Eclipse)项目 - >新配置 - > e.t.c然后导出为jar文件使用speciefied配置。这很好,但这不是我需要的。重复后 - 它不会工作。我试图做同样的提到这里:click使用清单将项目导出为jar文件

第二个解决方案:使用清单创建jar。那好吧,因为我可以指定main.class的入口点。但由于可以,它不会工作;找出其他软件包的位置。

UPD:Launcher.class看起来像这样

package backpack.dao; 

public class Launcher{ 
    public static void main(String[] args){ 
    Backpack.start(); 
} 
} 

我的项目结构:

src/backpack/dao/Item.java 
       /Backpack.java 
       /Chromo.java 
src/backpack/main/launcher/Launcher.java 

的问题是:我应该在清单写,而不是这个什么:

Main-Class src/backpack/main/launcher/Launcher到使可执行jar 成功?

P.S Launcher类使用来自Backpack.java的实例 请不要降级。我是新手

谢谢

回答

0

什么是Launcher.java的包?您是否已将包名称包含在manifest.txt中的类名中? 请记住,当Launcher.java是包 “backpack.main.launcher” 你在manifest.txt类名是:中

Main-Class src/backpack.main.launcher.Launcher 

代替:

Main-Class src/backpack/main/launcher/Launcher 

此外,请记住这一点:

文本文件必须以换行或回车结束。

要检查究竟是什么不对您的jar文件中使用命令行运行它:

java -jar MyJar.jar 

这里贴上错误消息输出。

如需更多帮助,您可以检查从Oracle这个例子:link

编辑:

我重新创建你的项目结构,我已经找到了解决方案(至少我认为我有:) )

  1. 编译你的代码,并转到编译代码的父目录(带* .class文件,这应该是“out”目录或类似的东西 - dep从你的IDE结束)。例如:当您的项目在some/path/src/backpack/main/launcher时,请转至src目录。
  2. 运行命令: jar cvfe MyJar.jar backpack.main.launcher.Launcher -C . . (是的,在最后两个点)

这与名MyJar.jar和清单文件(-e标志)与主类backpack.main.launcher.Launcher应该创建罐子。 -C标志包括目录.(当前一个)的递归的所有* .class文件,所以从daolauncher包都包含。

  • 测试罐:java -jar MyJar.jar
  • +0

    感谢您的回答,这不是一个好的解决方案。因为在launcher.class中我调用了其他类的方法。此课程位于其他地点。所以在通过cli创建jar之后(我收到错误2:'can not see backpack.dao package')。 – Reborn

    +0

    Post Updated ... – Reborn

    +0

    我对你的项目结构有点困惑: 1.什么是Item.java,Backpack.java和Chromo.java包? 2.根据项目的结构,Launcher.java可能在'backpack.dao'包中吗?它应该在'backpack.main.launcher'包中。你的项目是否编译? 3.为什么你需要在单独的目录中插入Launcher.java? – baza92

    相关问题