无法将默认Java libGDX项目从Eclipse导出为jar
当我从eclipse中将默认的libgdx项目导出为可运行的JAR文件,然后运行.JAR文件时,它只会弹出一个黑屏,然后关闭 当我从Eclispe内部运行项目代码时,它工作得很好。程序将显示带有“坏逻辑”徽标的正确红色屏幕(这就是应该发生的情况) 如果我在命令行中使用gradle和命令无法将默认Java libGDX项目从Eclipse导出为jar,java,eclipse,jar,libgdx,desktop,Java,Eclipse,Jar,Libgdx,Desktop,当我从eclipse中将默认的libgdx项目导出为可运行的JAR文件,然后运行.JAR文件时,它只会弹出一个黑屏,然后关闭 当我从Eclispe内部运行项目代码时,它工作得很好。程序将显示带有“坏逻辑”徽标的正确红色屏幕(这就是应该发生的情况) 如果我在命令行中使用gradle和命令 gradlew desktop:dist 然后运行创建的jar,它只需打开显示一个黑屏一秒钟,然后关闭 使用的代码是默认的Java libgdx项目代码: package com.mygdx.game.tes
gradlew desktop:dist
然后运行创建的jar,它只需打开显示一个黑屏一秒钟,然后关闭
使用的代码是默认的Java libgdx项目代码:
package com.mygdx.game.tesprac;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class TestLibgdx extends ApplicationAdapter {
SpriteBatch batch;
Texture img;
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(img, 0, 0);
batch.end();
}
}
桌面启动器:
package com.mygdx.game.tesprac.desktop;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
import com.mygdx.game.tesprac.TestLibgdx;
public class DesktopLauncher {
public static void main (String[] arg) {
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
new LwjglApplication(new TestLibgdx(), config);
}
}
我终于找到了解决方案,并将其发布在这里,供其他人查看 1.)确保android项目中的资产文件夹在桌面项目中“链接”。要执行此操作,请在“软件包资源管理器”中将“资源”文件夹向下拖动到桌面项目,并在出现提示时选择允许链接文件夹的选项 2.)右键单击桌面项目选择属性->构建路径,然后将android项目添加到“项目”选项卡下的构建路径 3.)在android项目中,右键单击资产文件夹并选择构建路径->“用作源”
4.)右键单击桌面项目,然后选择:导出->Java->运行JAR文件,选择“将所需库打包到生成的JAR”选项->完成。在.JAR位置打开
cmd
,并使用Java-JAR-yourJar.JAR
命令运行它-您可能会看到堆栈跟踪-粘贴到此处谢谢。这个问题已得到某种程度的解决。问题是最初图像文件甚至不在jar中。即使正确构建了jar,仍然无法找到图像。解决这一问题的方法是简单地将图像的副本移动到与jar相同的目录中。我仍然不知道如果不使用这个技巧,如何让jar定位图像。使用Gdx.files.internal(文件名)不起作用。