[英]Why does command prompt give me an error code in compilation when my IDE doesn't?
對不起,如果這是一個愚蠢的問題,但我對一般的編程不熟悉。 最近,我決定嘗試通過Java制作某種CYOA游戲作為對自己的挑戰。 它在 IDE (Eclipse) 上運行得很好,但是當我嘗試在命令提示符下為我的 Main.java 文件使用 java 和 javac 命令時,它不起作用。
Main.java:12: error: cannot find symbol
game.MainCharacter mc = new game.MainCharacter();
^
symbol: class MainCharacter
location: package game
Main.java:12: error: cannot find symbol
game.MainCharacter mc = new game.MainCharacter();
^
symbol: class MainCharacter
location: package game
2 errors
是彈出的錯誤。 然而,在我的 IDE 上,沒有任何東西彈出,讓我可以毫無問題地運行代碼。 它只是發生在命令行中。 我錯過了什么嗎?
package game;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int i = 0;
Scanner input = new Scanner(System.in);
System.out.println("Choose your class:");
System.out.println("Soldier\nMage\nTechnician");
String choice = "null";
game.MainCharacter mc = new game.MainCharacter();
do {
choice = input.nextLine();
try {
mc.changeClass(choice);
} catch (Exception e) {
input.next();
}
if (mc.job != null) {
i++;
}
} while (i < 1); i--;
System.out.format("You've picked %s. Now please, tell me what I should call you.%n",mc.job);
String name = input.next();
mc.setName(name);
mc.showStats();
input.close();
}
}
package game;
public class MainCharacter {
protected int physical;
protected int magical;
protected int technical;
protected String name;
protected String job;
public void changeClass(String kw) {
switch (kw.toLowerCase()) {
case "soldier":
this.Soldier();
break;
case "mage":
this.Mage();
break;
case "technician":
this.Technician();
break;
default:
System.out.println("Invalid choice.");
}
}
public void showStats() {
System.out.format("%s, the %s\nPhysical: %d\nMagical: %d\nTechnical: %d%n",
this.name,this.job,this.physical,this.magical,this.technical);
}
public void setName(String change) {
this.name = change;
}
public void Soldier() {
this.physical = 6;
this.magical = 3;
this.technical = 1;
this.job = "Soldier";
}
public void Mage() {
this.physical = 1;
this.magical = 7;
this.technical = 2;
this.job = "Mage";
}
public void Technician() {
this.physical = 1;
this.magical = 2;
this.technical = 7;
this.job = "Technician";
}
}
如果你真的想在命令行上手動編譯這些東西(不要那樣做 - 使用像 maven 這樣的構建系統):
確保您有一個“源根”目錄。 這是您系統上的某個目錄,例如/Users/emit/workspace/mygame
,例如cd game; cat MainCharacter.java
cd game; cat MainCharacter.java
可以工作(如包的子目錄,然后是源文件)。
通過手動明確列出每個源文件作為javac
的參數(告訴你你想要一個構建系統)進行編譯,同時你在源代碼根目錄中。 所以:
cd /Users/emit/workspace/mygame
javac -cp ../lib/dep1.jar:../lib/dep2.jar game/Main.java game/MainCharacter.java
其中“dep1”和“dep2”是您正在使用的第三方庫(如果沒有,則不需要-cp
或 rest。
然后,要運行它,請在該目錄中運行:
java -cp .:../lib/dep1.jar:../lib/dep2.jar game.Main
注意-cp.
部分,這很重要(只要堅持使用-cp.
如果您沒有依賴項)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.