情况一 Eclipse编译后的带包的文件的在命令行中不能运行的问题及解决办法
问题陈述:本人将EClipse的工作路径设为C:\software\eclipseworks,并建了一个名为MyFirstJAVA的项目,文件结构如下图
然后在Eclipse里面进行编译 得到的文件结构如下(其中MyFirstClass位于C:\software\eclipseworks目录下) :
然后运行下面任务,将出现下面情况
错误提示的意思是找不到类,但是让我们运行如下命令时则能出现正确结果如下:
情况二 带包的java类在命令行中的如何编译和执行
假设在C:\JavaDemo文件夹下有类Hello.java,其源码如下:
package cn.sun.hello;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
方法一:
编译:
C:\JavaDemo>javac Hello.java
新建目录:
C:\JavaDemo>md cn\sun\hello
移动字节码文件Hello.cass到 .\cn\sun\hello文件夹下。
C:\javaDemo>move Hello.class .\cn\sun\hello
执行程序:
C:\JavaDemo>java cn.sun.hello.Hello
输入结果:
Hello World!
以上仅提供一种简单方法,参考而已.
方法二:
c:\JavaDemo>Hello.java
编译:
c:\JavaDemo>javac -d . Hello.java
执行:
c:\JavaDemo>java cn.sun.Hello
总结 java中的包表现在文件系统中就是文件夹,我们在编译直接找到.java文件所在的目录利用javac (你要编译的文件名).java
但在执行过程中首先依据包的层次建立文件夹 将编译后的文件.class拷贝到最底层文件夹下 然后转到不包含包文件夹的最底层文件夹下,用如下格式执行这个class文件:
java 包名1.包名11.-------.(编译生成的文件名).class
就能执行了,其中包名1和包名11表明包的层次结构 。