java - 运行 Jar 文件时出现问题

标签 java ant jar mainclass

我已经将一个 java 项目编译成一个 Jar 文件,但在运行它时遇到问题。

当我运行时:

java -jar myJar.jar

出现以下错误

Could not find the main class: myClass

类文件不在 jar 的根目录中,因此我尝试更改主类的路径以匹配类文件的路径,但我遇到了同样的问题。

我应该展平文件结构吗?如果是这样,我该怎么做。如果有任何用处,我正在使用 Ant 构建 Jar 文件。

更新

这是 jar 的内容和相关的 Ant 部分,我已经将我工作的公司的名称更改为“org”:

META-INF/
META-INF/MANIFEST.MF
dataAccessLayer/
dataAccessLayer/databaseTest.class
org/
org/eventService/
org/eventService/DatabaseObject.class
org/eventService/DatabaseObjectFactory.class
org/eventService/DbEventClientImpl$HearBeatMonitor.class
org/eventService/DbEventClientImpl.class
org/eventService/EmptyQueryListException.class
org/eventService/EventHandlerWorkItem.class
org/eventService/EventProcessor.class
org/eventService/EventTypeEnum.class
org/eventService/EventWorkQueue$MonitorThread.class
org/eventService/EventWorkQueue$PoolWorker.class
org/eventService/EventWorkQueue.class
org/eventService/FailedToLoadDriverException.class
org/eventService/IConnectionFailureListener.class
org/eventService/InvalidEventTypeException.class
org/eventService/JdbcInterfaceConnection.class
org/eventService/NullArgumentException.class
org/eventService/OracleDatabaseObject.class
org/eventService/ProactiveClientEventLogger.class
org/eventService/ProactiveClientEventLoggerException.class
org/eventService/PropertyMap.class
org/eventService/SQLServerDatabaseObject.class
org/eventService/TestHarness.class
org/eventService/Utilities.class

Ant 目标:

<target name="compile" depends="init" description="compile the source ">
    <javac srcdir="src" destdir="bin" classpathref="project.class.path"/>
</target>
<target name="buildjar" description="build jar file" depends="compile">
    <mkdir dir="dist"/>
    <jar destfile="dist/myJar.jar" basedir="bin" includes="**/*.class" >
        <manifest>
            <attribute name="Main-Class" value="org.eventService.ProactiveClientEventLogger"/>
        </manifest>
     </jar>
</target>

最佳答案

在 list 文件中,确保将属性 Main-Class 设置为包含 main() 方法的类的名称。例如,如果类的包限定名称是 my.cool.Class,那么在您的 JAR list 中,Main-Class 应该设置为 我的.cool.Class.

还要确保你的 .java 文件中有一个包声明(例如,在 Class.java 中,确保你有正确的 package my.cool; 声明)。此外,请确保您的目录层次结构设置正确(my.cool.Class 应该在 $SRC/my/cool/Class.java 中)。

关于java - 运行 Jar 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/309040/

相关文章:

java - 新增、删除字符串差异

java - XHTML 到 PDF 使用 Flying Saucer 如何缓存 css

java - JPA 自定义查询仅返回某些值

java - mysql 的 Ant 构建失败

android - 我们可以将库项目用作 jar 文件吗?

java - Java 8按属性区分

grails - Ant 构建任务:如何使用grails 2.5更改ant命令的basedir(例如如何做 “cd”)

ant - 是否可以在 build.xml 中为 ant 指定记录器?

gradle - 在 fat JAR 中包含源

maven - 部署Maven项目抛出java.util.zip.ZipException : invalid LOC header (bad signature)