有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JAR类路径和外部JAR

我实际上有两个问题

我使用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时,我会得到main class not found exception
//奇怪吧


共 (3) 个答案

  1. # 1 楼答案

    ant目标正在创建带有类路径属性的清单。如果查看这些路径,您会注意到它们是相对于当前目录的。当您从命令行执行java-jar时,您是否处于

    G:/dev/myproj
    

    。。。目录

  2. # 2 楼答案

    我建议您使用这两种方法生成的JAR文件,使用jar命令将它们扩展到临时目录,然后在递归模式下使用diff对它们进行比较

    然而,我怀疑@Pace已经指出了这个问题;i、 e.您正在Class-Path清单条目中使用相对路径,这可能会导致问题

  3. # 3 楼答案

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