晚上好,Stack Overflow!
我几天前开始学习Java,但是当我的电脑有点慢时,我就不再使用IDE了。所以,我决定使用 Sublime Text,并在 cmd 上使用 ant 编译东西,因为这似乎是最合理的做法。
今天我开始(至少尝试过)遵循 ThinMatrix 的一系列 LWJGL 教程(非常酷),但我无法解决每次尝试编译 '项目'。
这是我的项目的结构:
LWJGL
- 源代码
- com
- 游戏
- 测试
MainGameLoop.java - 渲染引擎
DisplayManager.java
- 测试
- 游戏
- com
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/