我编译了一个类并且文件显示但是我不能用java运行它或者从其他类中使用它,其中java或javac就好像它不存在一样。
它编译......
john@fekete:~/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 ...
john@fekete:~/devel/java/mysqlexample$ java first/mysql/MySQLAccess.class
Error: Could not find or load main class first.mysql.MySQLAccess.class
john@fekete:~/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
文件的结构是这样的,我从该结构的根目录编译。
john@fekete:~/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
john@fekete:~/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。*不起作用。
也许我需要改变我的类路径。
john@fekete:~/devel/java/mysqlexample$ echo $CLASSPATH
/usr/local/mysql-connector-java/mysql-connector-java-5.1.24-bin.jar
答案 0 :(得分: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 -classpath .:/usr/local/mysql-connector-java/mysql-connector-java-5.1.24-bin.jar first.mysql.MySQLAccess
答案 1 :(得分:1)
尝试运行java类时删除.java
。
另外,请确保您的类有一个main方法,并且它位于包first.mysql
中,这可能是其他类无法看到它的原因。