Dunno为什么会发生这种情况......好的就是这种情况:我的笔记本电脑上有一个nb项目。我的桌面上有相同的项目。我在桌面上复制源(而不是整个项目),覆盖桌面源。一切都清理和建立好。然后我启动调试器。在主类上我可以一步一步调试。如果它进入内部方法,那么会发生什么:
Listening on 37574
User program running
LineBreakpoint test.java : 45 successfully submitted.
Breakpoint hit at line 45 in class test by thread main.
Thread main stopped at test.java:45.
User program running
Not able to submit breakpoint LineBreakpoint baseControllerManager.java : 41, reason: No executable location available at line 41 in class baseClasses.JNW.baseControllerManager.
Invalid LineBreakpoint baseControllerManager.java : 41
Debugger stopped on uncompilable source code.
User program finished
正如你所看到的那样,直到我在静态方法main它工作(第45行),因为我跳进一个非静态方法(这是一个覆盖)它出来了...我试图:
你有什么建议?
为了完整起见,我附上了主要类的来源:
import baseClasses.JNW.baseAction;
import baseClasses.JNW.baseContResult;
import baseClasses.JNW.baseController;
import baseClasses.JNW.baseControllerManager;
public class test {
public static class starter extends baseController {
public static final String ACTION_START = "ACTION_START";
@Override
public baseContResult doAction(baseAction action) {
if (ACTION_START.equals(action.action)) {
manager.log("action start...");
return new baseContResult(RESULT_OK, baseContResult.resultType.RESULT_OK);
}
return super.doAction(action);
}
@Override
public void init() {
super.init();
}
}
public void startMe() {
baseControllerManager manager;
try {
manager = new baseControllerManager();
} catch (Exception e) {
e.printStackTrace();
return;
}
starter st = new starter();
manager.setMainController(st);
manager.doAction(new baseAction(starter.ACTION_START));
}
public static void main(String args[]) {
test te = new test();
te.startMe();
}
}
答案 0 :(得分:2)
在文件nbproject/project.properties
中查找属性javac.debug
,并确保它为“true”。如果是,则在nbproject目录中的其他地方使用grep以及任何本地ant设置。
在半相关的说明中:当我在NetBeans中创建项目时,即使源已经存在于其他地方,我总是创建一个新的“Java应用程序”,并让它根据需要填充项目目录。然后我可以移动我的源代码并更新项目,NetBeans保持高兴。
尝试设置javac.debug
后编辑:
再次查看您的问题,我发现您 能够在test.java
上设置断点,但无法在baseControllerManager.java
上设置断点。这向我表明,你是从某个地方的某个JAR获得后一个类,而不是从你的项目目录。
因此,第一步是确保您尚未定义CLASSPATH
环境变量。无论您使用的是IDE还是手动构建,这都不是永远的好事。
下一步是查看您为NetBeans项目指定的库。您可以在JAR文件上使用grep
;文件目录是纯文本。找到不合格的类名就足够了。
最后一件事是通过在构建目录中查找它来验证您确实正在编译该类。
答案 1 :(得分:1)
通常,无法编译的错误意味着无法解析符号。
如果您对其他项目,库或jar有依赖关系,请确保它们已成功构建/存在。
选中“在类路径上构建项目”(在项目属性>构建>编译中)通常会解决此问题。如果您没有选中此选项,则您负责确保已构建依赖项。
答案 2 :(得分:1)
project.properties中不存在该属性。所以我添加了它(在那里有许多javac。*属性...)。然后我像这样说:
dario@dario-desktop:~/Scrivania/JNW$ grep -r javac.debug *
nbproject/project.properties:javac.debug=true
nbproject/build-impl.xml: <property name="javac.debug" value="true"/>
nbproject/build-impl.xml: <attribute default="${javac.debug}" name="debug"/>
nbproject/build-impl.xml: <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
nbproject/private/private.properties:javac.debug=true
nbproject/project.properties~:javac.debug=true
事实上,它在最后一行看到了我的补充。
我清理并重建了项目。调试器不再工作...........我想我会踢我的老板屁股,直到他同意使用eclipse或他解雇我。我会失业但很开心。除了开玩笑,@ kdgrgory,你还有什么想法???
答案 3 :(得分:0)
我遇到了同样的问题,发现如果我从项目标签中运行干净,它就可以解决问题。