2013-05-01 131 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