当我将 Gui 类从另一个项目复制到新项目时,我认为这很容易。不幸的是,事实并非如此。我制作了一个名为 Entwine 的游戏,其包名为 net.jibini.entwine
,新项目的包名为 net.jibini.pilgrim
。当我尝试运行重构的代码(从 Entwine 获取并放入 Pilgrim)时,出现以下错误:
java.lang.RuntimeException:无法编译的源代码 - 包 net.jibini.entwine 不存在
。我找不到任何返回原始类的链接,所以我不知道它来自哪里。
这是我的 Gui 基类:
package net.jibini.pilgrim.gui;
/**
*
* @author zgoethel12
*/
public abstract class Gui {
public abstract void render();
}
这是 GuiPause 类:
package net.jibini.pilgrim.gui;
import net.jibini.pilgrim.Main;
import org.lwjgl.opengl.Display;
/**
*
* @author zgoethel12
*/
import static org.lwjgl.opengl.GL11.*;
public class GuiPause extends Gui {
GuiElementButton back, quit;
public GuiPause() {
controls();
}
@Override
public void render() {
glPushMatrix();
glTranslatef(0, 0, 10);
glBegin(GL_QUADS);
glVertex2f(10, Display.getHeight() - 10);
glVertex2f(440, Display.getHeight() - 10);
glVertex2f(440, 10);
glVertex2f(10, 10);
glEnd();
if (Display.wasResized()) {
controls();
}
glTranslatef(0, 0, 1);
back.render();
quit.render();
glPopMatrix();
}
public void controls() {
back = new GuiElementButton(20, 20, 400, "Back");
quit = new GuiElementButton(20, Display.getHeight() - (back.height + 20), 400, "Quit");
back.onClick = new OnClickListener() {
@Override
public void onClick() {
Main.instance.gui = null;
}
};
quit.onClick = new OnClickListener() {
@Override
public void onClick() {
Main.instance.exitGame();
Main.instance.gui = new GuiMainMenu();
}
};
}
}
最后,这就是我在游戏中设置 Gui 的方式:
if (pressedI.contains(Keyboard.KEY_ESCAPE)) {
if (gui == null) {
try {
gui = new GuiMainMenu();
} catch (ExceptionInInitializerError err) {
System.out.println(err.getCause());
}
} else {
gui = null;
}
}
由于我尝试展示的每个 Gui 都会发生这种情况,我认为这可能是 Gui 基类或构造函数中对 controls();
的调用存在问题。我想知道问题是什么以及如何解决它,并希望得到任何帮助!
问候, 约翰·史密斯
最佳答案
我的问题的解决方案是转到“项目属性>编译”并禁用“保存时编译”
关于java - 在项目之间重构代码会导致 RuntimeException : Uncompilable Code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466647/