gpt4 book ai didi

java - 尽管指定了正确的主类、类路径等,Jar 仍无法运行

转载 作者:行者123 更新时间:2023-12-02 11:03:53 27 4
gpt4 key购买 nike

我的构建使用下面的 build.xml 文件完美编译和运行。

唯一的问题是我创建了一个 jar,但它无法运行而不给出 无法找到或加载主类 错误。

我已经阅读了几个关于常见无法找到或加载主类错误的Stack Overflow答案。但是,我无法在下面的 build.xml 中发现我做错了什么。

build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project default="run" name="My Project ">

<target name="run" depends="createjar">
<java classname="com.company.program.project.MyMainClass">
<classpath path="staging">
<fileset dir="C:\COMPANY\Eclipse\3.6-64\plugins">
<include name="org.eclipse.swt.*.jar" />
</fileset>
</classpath>
</java>
</target>

<target name="createjar" depends="compile">
<jar destfile="./builds/jars/swtgui.jar" basedir="./staging/com/company/program/project" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="com.company.program.project.MyMainClass" />
</manifest>

<!--
<fileset dir="./bin/com/company/program/project" includes="./*.class" />
-->
<fileset dir="C:\COMPANY\Eclipse\3.6-64\plugins\" includes="org.eclipse.swt.win32.win32.x86_64_3.6.0.v3650b.jar" />
</jar>
</target>

<target name="compile">
<javac includeantruntime="false" srcdir="./src" destdir="staging">
<classpath>
<fileset dir="C:\COMPANY\Eclipse\3.6-64\plugins">
<include name="org.eclipse.swt.*.jar" />
</fileset>
</classpath>
</javac>

</target>

<record name="./MyMainClass.log" loglevel="verbose" action="start"/>

MyProject.log

createjar:
[jar] found a total of 0 manifests in 2 resource collections
[jar] A$1.class added as A$1.class is outdated.
[jar] A$10.class added as A$10.class is outdated.
[jar] A$11.class added as A$11.class is outdated.
[jar] ...
[jar] No sources found.
[jar] Building jar: C:\my_workspace\my_project\builds\jars\swtgui.jar
[jar] adding directory META-INF/
[jar] adding entry META-INF/MANIFEST.MF
[jar] adding entry A$1.class
[jar] adding entry A$10.class
[jar] adding entry A$11.class
[jar] adding entry org.eclipse.swt.win32.win32.x86_64_3.6.0.v3650b.jar
[jar] No Implementation-Title set.No Implementation-Version set.No Implementation-Vendor set.
Location: C:\my_workspace\my_project\build.xml:16:
createjar: duration 0 seconds

主类已正确指定。正确指定了类路径 (basedir)。它会等待编译完成后再执行。等等

我在下面留下了我的日志文件,但 ant 似乎没有提供任何关于为什么它找不到我的主类的线索。有人立即发现上述两个文件有什么问题吗?

最佳答案

jar 任务的 basedir 属性应与 javac 任务的 destdir 属性匹配。

javac 任务写为

<javac includeantruntime="false" srcdir="./src" destdir="staging">

因此 jar 任务应写为

<jar destfile="./builds/jars/swtgui.jar" basedir="staging" filesetmanifest="mergewithoutmain">

由于您的包被定义为 com.company.program.project,Java 编译器和 JVM 期望您的类位于文件夹 com/company/program/project 中code>,但您当前的 jar 任务将它们放入 jar 文件的根文件夹中。

关于java - 尽管指定了正确的主类、类路径等,Jar 仍无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51129113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com