JAR类路径和外部jar

时间:2011-05-10 22:18:17

标签: java jar classpath manifest

我实际上有2个问题

我使用eclipse - >导出项目为我的简单桌面(GUI)程序生成一个jar文件 它会生成一个jar文件和一个ant脚本。

第一个问题: 双击时生成的jar工作正常 当我使用生成的ant脚本生成jar时 靠我自己,它不起作用。 像这样的目标可能出现什么问题(假设所有依赖都得到满足)

 <target name="create_run_jar">
        <jar destfile="G:/dev/myproj/myproj.jar">
            <manifest>
                <attribute name="Main-Class" value="view.myproj"/>
                <attribute name="Class-Path" value=". myproj_lib/grouplayout.jar"/>
            </manifest>
            <fileset dir="G:/dev/myproj/bin"/>
        </jar>
        <delete dir="G:/dev/myproj/myproj_lib"/>
        <mkdir dir="G:/dev/myproj/myproj_lib"/>
        <copy file="G:/dev/.metadata/.plugins/org.dyno.visual.swing/layoutext/grouplayout.jar" todir="G:/dev/myproj/myproj"/>
    </target>  

// nevemind
//第二个问题:
//当我双击自动生成的jar文件时,程序启动并正常工作 //当我从命令行执行java myjar时,我发现主类没有找到异常..
//怪啊?

3 个答案:

答案 0 :(得分:1)

我建议你采用两种方式生成JAR文件,使用jar命令将它们扩展到临时目录,然后在递归模式下使用diff来比较它们。

然而,我怀疑@Pace已经解决了这个问题;即您在Class-Path清单条目中使用相对路径,这可能会导致问题。

答案 1 :(得分:0)

java -jar <jar name>是执行jar的正确方法。

答案 2 :(得分:0)

ant目标是使用classpath属性创建清单。如果查看这些路径,您会发现它们与当前目录相关。当你从命令行执行java -jar时,你在...

G:/dev/myproj

...?目录