java - 无法找到或加载主类 Java

标签 java ant

晚上好,Stack Overflow!

我几天前开始学习Java,但是当我的电脑有点慢时,我就不再使用IDE了。所以,我决定使用 Sublime Text,并在 cmd 上使用 ant 编译东西,因为这似乎是最合理的做法。

今天我开始(至少尝试过)遵循 ThinMatrix 的一系列 LWJGL 教程(非常酷),但我无法解决每次尝试编译 '项目'。

这是我的项目的结构:

  • LWJGL

    • 源代码
      • com
        • 游戏
          • 测试
            MainGameLoop.java
          • 渲染引擎
            DisplayManager.java

    build.xml

女士们、先生们...build.xml(遵循 Ant 的官方 HelloWorld 教程):

<project name="LWJGL" basedir="." default="main">

<property name="src.dir"     value="src"/>

<property name="build.dir"   value="build"/>
<property name="classes.dir" value="${build.dir}/classes"/>
<property name="lib.dir"    value="lib"/>
<property name="jar.dir"     value="${build.dir}/jar"/>

<property name="main-class"  value="com.game.test.MainGameLoop"/>

<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar" />

</path>

<target name="clean">
    <delete dir="${build.dir}"/>
</target>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" classpathref="classpath" />
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}"/>
    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
        <manifest>
            <attribute name="Main-Class" value="${main-class}"/>
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true">
        <jvmarg value="-Djava.library.path=lib/natives-win" />
    </java>
</target>

<target name="clean-build" depends="clean,jar"/>

<target name="main" depends="clean,run"/>

每次我在项目根文件夹中的命令行上运行 ant 时,我都会得到以下信息:

[java] Error: Could not find or load main class com.game.test.MainGameLoop
[java] Java Result: 1

我很难理解这个问题的根本问题是什么,我有点性虐待 Google 搜索,试图在 Java 论坛、博客甚至这里找到答案......

我通常不喜欢在 Stack Overflow 上塞满菜鸟问题,但我必须承认我不知道该怎么做。

提前致谢!

最佳答案

您的代码依赖于库。您已成功将库添加到类路径中以编译代码,并因此成功创建了包含您的类的可执行 jar 文件。但这些类依赖于库来运行。当运行 jar 文件时,除了 jar 文件之外,您不需要在任何地方指定 Java 应该在库中查找类。

参见Generate manifest class-path from <classpath> in Ant了解如何将类路径条目添加到可执行 jar 文件的 list 中。注意:库的路径必须与 jar 的路径相关。

Ant 有点过时了。如果我是你,我会尝试使用 gradle,它有一个简洁的应用程序插件,可以为你完成所有这些工作,甚至更多。

关于java - 无法找到或加载主类 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32791434/

相关文章:

ant - 如何以编程方式与 ANT 连接?

java - Eclipse build.xml Ant Tab 出现 "Reference not Found"错误;运行良好

android - 如何在非 Eclipse Android 应用程序中正确包含支持库

java - 在Hibernate中对于composite-id,为什么类应该实现Serialized

java - 如何在for循环中创建新对象?

java - 我无法连接到 docker 中的 rabbitmq 服务器

java - 注册期间生成唯一 ID

java - 发现符号的路径

java - 从 Maven Ant Task 迁移到 Maven Artifact Resolver Ant Tasks

java - ant卸载android包