2013-05-01 130 views
0

在Java中的導入語句似乎是奇怪的,我檢查了Java的完整引用,我看不出爲什麼不起作用。Java導入問題

我有兩個文件在第一個/ mysql/MySQLAccess.java和另一個在第一個/ mysql/test/Main.java和一個導入語句在後者for first.mysql.MySQLAccess不起作用。

package first.mysql.test; 

import first.mysql.MySQLAccess; 

MySQLAccess.java與

package first.mysql; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.Date; 

public class MySQLAccess { 

開始我不明白爲什麼這是行不通的,它應該很好地工作,除非我已經錯過了一些東西。我編譯MySQLAccess.java和它產生MySQLAccess.class

Main.java:1: error: package first.mysql does not exist 
import first.mysql.MySQLAccess; 
       ^
Main.java:5: error: cannot find symbol 
    MySQLAccess dao = new MySQLAccess(); 
    ^
symbol: class MySQLAccess 
location: class Main 
Main.java:5: error: cannot find symbol 
    MySQLAccess dao = new MySQLAccess(); 
         ^
symbol: class MySQLAccess 
location: class Main 
3 errors 

我編譯:

[email protected]:~/devel/java/mysqlexample$ javac first/mysql/test/Main.java 

的源代碼: 第一/ mysql /下MySQLAccess.java:http://pastebin.com/7WkewTEf 第一/ MySQL的/test/Main.java:http://pastebin.com/aSsn34fX

我已經找到了線索怪異的行爲,JAVA似乎並不喜歡像MySQLAccess.class ...

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

你還沒說你怎麼編譯或什麼錯誤,這使得它很難幫助你。 – 2013-05-01 09:17:38

+0

你在哪裏編譯它?第二個文件的編譯器能否找到它,即是否需要爲編譯器指定類路徑? – Rup 2013-05-01 09:18:11

+0

我已將編譯器從名爲mysqlexample的文件夾運行到第一個/ mysql/MySQLAccess.java子目錄中的Java代碼以及第一個/ mysql/test/Main.java類文件與源文件一起運行。 – 2013-05-01 09:22:55

回答

0

最有可能的原因 - first.mysql.MySQLAccess.java沒有被編譯成功,或者直接在/ mysql下編譯 - 否定包結構。源可能在那裏,但就first.mysql.test.Main.java而言,它只會查找first.mysql.MySQLAccess.class。

首先,確保你有這樣的結構:

mysqlexample 
    |--first 
     |--mysql 
      |--test 
      |-- Main.java 
     MySQLAccess.java 

然後發出以下命令:

[email protected]:~/devel/java/mysqlexample$ javac first/mysql/MySQLAccess.java 

[email protected]:~/devel/java/mysqlexample$ javac first/mysql/test/Main.java 
+0

我得到了「第一/ mysql/MySQLAccess.java使用或覆蓋棄用的API「,但似乎已經爲MySQLAccess.java生成了一個.class文件。它使用折舊的java.sql.Date,是否需要移動到日曆?我只是想讓示例運行。 – 2013-05-01 09:33:04

+0

沒關係。這不是問題。你能分享你在編譯MySQLAccess時使用的命令嗎? – Jops 2013-05-01 09:34:28

+0

javac先/ mysql/MySQLAccess.java – 2013-05-01 09:44:23