尝试使用Libgdx框架并遇到了一些令人沮丧的问题。我正在关注一个教程,但我无法运行我的项目。我做错了什么?
package com.mygdx.game.android;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class AndroidLauncher implements ApplicationListener {
SpriteBatch batch;
Texture mario;
@Override
public void create() {
batch = new SpriteBatch();
mario = new Texture(Gdx.files.internal("mario.png"));
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void render() {
Gdx.gl.glClearColor(1,1,1,1);
batch.begin();
batch.draw(mario, 50, 50);
batch.end();
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
}
以下是我运行项目时控制台显示的内容:
Exception in thread "main" java.lang.NoClassDefFoundError: com/badlogic/gdx/jnigen/NativeCodeGenerator
at com.badlogic.gdx.utils.GdxBuild.main(GdxBuild.java:34)
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.jnigen.NativeCodeGenerator
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 1 more
答案 0 :(得分:7)
我遇到了同样的问题,但意识到我正在运行GdxBuild。确保您右键单击DesktopLauncher.java>运行方式> Java应用程序。
答案 1 :(得分:3)
在我的情况下,这是我的第一个 libGDX 项目,我在KUBUNTU上使用 Android Studio版本3.0.1 运行它,并且只要我导入了新创建的项目使用 gdx-setup.jar(安装应用)向Android Studio发出一条弹出式消息,要求通知我更新 Gradle ,这样就破坏了项目。
<强>解决方案:强> 创建一个新的libGDX项目并导入,不用更新Gradle(点击“不要再提醒我这个项目”),它应该有效。
答案 2 :(得分:2)
右键单击项目 - 属性 - 构建选项 - 订购和导出并检查所有gdx库。可能就是这样,当它无法在运行时找到一个类时会出现错误。
答案 3 :(得分:1)
我遇到了同样的问题,我唯一可以重现它的方法是使用桌面配置。因此,不要使用桌面配置,而是将其作为gradle配置运行。在命令行中,这将是:
gradlew desktop:run
由于每次想要运行项目都会手动执行此操作,因此请创建新的Gradle运行配置
如果您选择运行配置中的Gradle项目作为子模块,则只需键入gradlew run
而不是gradlew desktop:run
。
您必须在VM选项输入中定义内存标志(不必具有这些值):
-Xmx2G -Xms128M
脚本参数可以保持为空。请注意,整个事情都算作Gradle构建,因此您必须先杀死该进程(如果它正在运行),然后才能启动新进程。
我可以毫无问题地导出一个罐子,所以你的生产应该没问题。
TL:DR; 使用带有gradlew desktop:run
的Gradle运行配置,而不是使用应用程序
答案 4 :(得分:1)
这么多不同的答案。我没有全部关注它们,而是创建了一个新项目。尽可能简单;如果升级IntelliJ会破坏我的项目,我会希望将更少的未使用功能拖入2018年。
我得到了
java.lang.ClassNotFoundException: com.badlogic.gdx.ApplicationListener
...
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.ApplicationListener
...
将IntelliJ从2017.3升级到2018.1。
这次我没有勾选任何方框:
,类似于“高级”设置:
如果没有IDEA选择,该项目需要花费10秒来生成并提供有关如何导入的不同说明,这些说明会获得显着更大的成功(旧的方式是最好记住的,Eclipse有人吗?)。
当然,我还有一些错误,但在开始新项目之前,我没有遇到任何错误。之后,只需复制旧文件即可。还有一个提示,无论IntelliJ提供什么设置打开以将Java级别设置为1.7,Gradle文件都不会被触及,因此您必须手动搜索剩余的1.6个引用。
答案 5 :(得分:0)
右键单击 - &gt;运行方式 - &gt;运行配置 - &gt;单击左侧菜单中的Desktop-Launcher,然后单击“运行”,这应该可以修复它。
答案 6 :(得分:0)
项目结构 - &gt;模块 - &gt;选择所需的模块(桌面,android等) - &gt;依赖关系 - &gt;添加库。
不要忘记将范围从“提供”改为“编译”。