2013-05-01 96 views
0

我編譯了一個類,文件出現了,但是我不能用java運行它,或者從其他類中使用它,其中java或javac的行爲就好像它不在那裏一樣。Java類編譯但無法加載

它編譯...

[email protected]:~/devel/java/mysqlexample$ javac first/mysql/MySQLAccess.java 
Note: first/mysql/MySQLAccess.java uses or overrides a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 

似乎不存在對Java ...

[email protected]:~/devel/java/mysqlexample$ java first/mysql/MySQLAccess.class 
Error: Could not find or load main class first.mysql.MySQLAccess.class 
[email protected]:~/devel/java/mysqlexample$ java first/mysql/MySQLAccess 
Error: Could not find or load main class first.mysql.MySQLAccess 

我無法從其他類中使用它。

first/mysql/test/Main.java:3: error: cannot find symbol 
import first.mysql.MySQLAccess; 
       ^
    symbol: class MySQLAccess 
    location: package first.mysql 

這些文件的結構是這樣的,我從該結構的根進行編譯。

[email protected]:~/devel/java/mysqlexample$ ls -l first/mysql/ 
total 12 
-rwxr-xr-x 1 john john 3625 May 2 07:59 MySQLAccess.class 
-rw-r--r-- 1 john john 3052 May 2 07:59 MySQLAccess.java 
drwxr-xr-x 2 john john 4096 May 2 08:02 test 
[email protected]:~/devel/java/mysqlexample$ ls -l first/mysql/test/ 
total 4 
-rw-r--r-- 1 john john 205 May 2 08:02 Main.java 

導入first.mysql。*不起作用。

也許我需要改變我的類路徑。

[email protected]:~/devel/java/mysqlexample$ echo $CLASSPATH 
/usr/local/mysql-connector-java/mysql-connector-java-5.1.24-bin.jar 

回答

4

java命令調用JVM,其不運行的源代碼。因此,

java first/mysql/MySQLAccess.java 

將不能正常工作。相反,你需要調用資源名,這將是

java first.mysql.MySQLAccess 

除了上面的命令行是可能到不行,因爲你可能尚未配置JVM搜索當前目錄用於類層次結構樹。你可能想要類似

java -classpath . first.mysql.MySQLAccess 

加載類first/mysql/MySQLAccess.class;但是,這並不是整個的故事。 CLASSPATH環境變量也會發揮作用,它將如何加載mysql-connector-java-5.1.24-bin.jar。但是,如果你遇到了問題,我建議你嘗試運行Java類時使其納入明確的,像這樣

java -classpath .:/usr/local/mysql-connector-java/mysql-connector-java-5.1.24-bin.jar first.mysql.MySQLAccess 
+0

啊,我必須有。在我的類路徑中。感謝堆,這真的讓我感到困擾,但至少我從經驗中學到了一些東西。 – 2013-05-02 05:11:02

1

取出.java

此外,請確保您的課程有一個主要方法,並且它在包first.mysql中,這可能是其他課程無法看到它的原因。

+0

我添加了一個主要方法,仍然沒有什麼可以看到它。 – 2013-05-02 05:08:53