成功的安装了JDK和Eclipse后,在开发测试Java工程中,很少会遇到开发环境问题。
这都归功于Eclise通过工程(project)和包(package)把这些管理好。
但偶尔在命令行下编译和运行Java文件时,还会遇到如下错误:
(以下示例都是在Win7上进行)
D:\temp> java Tmp
有时java源程序中package设置不当也会导致上述错误。
1. 在java源文件开头没有包声明语句 package;
D:\temp> javac Tmp.java
D:\temp> java Tmp
hello world!
2. 在java源文件开头有包声明语句 package com.hdz.test;
D:\temp> javac Tmp1.java
D:\jtest> java Tmp1
Error: Could not find or load main class Tmp1
错误原因:
编译含有包声明语句的java源程序文件的格式是:
javac -d your_path your_class.java
此命令能在 your_path/your_package/ 下生成 your_class.class。
上面的命令中没有-d选项,javac会在当前目录下生成J_Hello1.class(没有报错)。
但是执行java命令,会因为找不到class而出错。
解决方法:
用 javac -d . Tmp1.java 编译,将直接生成./your_package_path/Tmp1.class。
D:\temp> javac -d . Tmp1.java
D:\temp> java com.hdz.test.Tmp1
hello world!
注:直接进入包所在路径再执行是无效的:
D:\temp> cd /d D:\temp\com\hdz\test
D:\temp\com\hdz\test> java Tmp1
Error: Could not find or load main class Tmp1
以下是实例程序:
// D:\temp\Tmp.java public class Tmp { public static void main(String[] args) { System.out.println("hello world!"); } }
// D:\temp\Tmp1.java package com.hdz.test; public class Tmp1 { public static void main(String[] args) { System.out.println("hello world!"); } }