我想为调试模式定义一个带有静态标志的类,程序中的对象可以看到并相应地输出调试信息。 “ Option”类没有依赖关系,我首先对其进行编译。 (全部来自命令行/ .bat文件)Option类可以编译,但是引用该类的类将不会编译出“找不到符号”错误。
//Options - holds options for code, including debug modes, getters, setters
package UserViewer;
public class Option {
private static boolean debug1 = false;
private static boolean debug2 = false;
private static boolean debug3 = false;
private static boolean debug4 = false;
public static boolean isDebug1() {
return debug1;
}
public static void setDebug1(boolean val) {
debug1 = val;
}
public static boolean isDebug2() {
return debug2;
}
public static void setDebug2(boolean val) {
debug2 = val;
}
public static boolean isDebug3() {
return debug3;
}
public static void setDebug3(boolean val) {
debug3 = val;
}
public static boolean isDebug4() {
return debug4;
}
public static void setDebug4(boolean val) {
debug4 = val;
}
}
这是我尝试编译的第一个引用Option中静态方法的类
//contains all the User Interface elements
package UserViewer;
import javafx.scene.layout.BorderPane;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.event.ActionEvent;
class UIPane extends BorderPane implements EventHandler<ActionEvent> {
UIPane() {
if(Option.isDebug1() == true) { System.out.println("UIPane succesfully loaded."); }
}
@Override
public void handle(ActionEvent e) {
if(Option.isDebug2() == true) { System.out.println("Action Event detected in UIPane."); }
}
}
这里是compile.bat
javac -d . CONST.java
javac -d . Option.java
javac -d . UIPane.java
javac -d . App.java
javac -d . UserViewer.java
java UserViewer.UserViewer DEBUG1
pause
由于它们都在同一个程序包中-UserViewer-我想我可以从程序中的任何位置引用这些静态方法。
这是(第一个)编译器错误:
C:\...\UserViewer>javac -d . UIPane.java
UIPane.java:12: error: cannot find symbol
if(Option.isDebug1() == true) { System.out.println("UIPane succesfully loaded."); }
symbol: variable Option
location: class UIPane
UIPane.java:17: error: cannot find symbol
if(Option.isDebug2() == true) { System.out.println("Action Event detected in UIPane."); }
symbol: variable Option
location: class UIPane
我对CONST.java以及依赖于CONST和Option的所有其他对象都存在相同的问题,但是由于它们似乎都是同一个问题,因此我省略了其他错误-我的其余代码看不到Option.class或CONST.class,尽管它们在同一包中。 Option.class和CONST.class会进行编译,并且位于正确的包子目录UserViewer中。
感谢您的任何帮助。
正如评论中指出的,您必须一次性编译所有类。
这些是执行此操作的步骤:
cd
导航到主类的目录。javac NameOfYourMainClass.java
并按Enter。示例:
想象这是您的文件系统:
现在假设myProject
文件夹是项目的根目录,您将使用控制台将工作目录更改为main
,然后写入javac MainClass.java
。
如果以后要运行程序,请键入java NameOfYourMainClass
。