没有合适的资源?快使用搜索试试~ 我知道了~
详述Java中带包的类的编译与调试
需积分: 3 25 下载量 54 浏览量
2010-04-27
22:06:57
上传
评论
收藏 8KB TXT 举报
温馨提示
试读
6页
详述Java中带包的类的编译与调试详述Java中带包的类的编译与调试详述Java中带包的类的编译与调试
资源推荐
资源详情
资源评论
详述Java中带包的类的编译与调试
(假设该文件的位置是/home/tarena/Test.java):
package a.b;
public class Test
{
public static void main(String[]args)
{
System.out.println("This is a simple test!");
}
}
下面根据不同的编译方法来讨论:
第一种编译方法(此时终端当前目录为主目录):
javac Test.java
假设如果此时终端的当前目录是在/home,则编译命令则应改为:
javac /home/tarena/Test.java
或者使用相对路径:
javac tarena/Test.java
执行完该命令后,在/home/tarena/目录下生成一个Test.class文件.
如何运行这个文件?由于我们只能在包外运行class文件,所以首先要按照包的结构创建目录
mkdir -p a/b
mv Test.class a/b/
然后执行这个class文件(此时终端当前目录为主目录):
java a.b.Test
第二种编译方法(此时终端当前目录为主目录):
javac -d . Test.java
执行该命令后,编译器会根据包结构自动生成相应的目录,对于上面这个程序,则编译生成的class文件位于/home/tarena/a/b/Test.class.
由于相应的目录也已经自动生成,并且当前目录恰是包结构的上层目录,所以此时直接执行该文件,不需要再像上面一样手动创建目录:
java a.b.Test
(假设该文件的位置是/home/tarena/Test.java):
package a.b;
public class Test
{
public static void main(String[]args)
{
System.out.println("This is a simple test!");
}
}
下面根据不同的编译方法来讨论:
第一种编译方法(此时终端当前目录为主目录):
javac Test.java
假设如果此时终端的当前目录是在/home,则编译命令则应改为:
javac /home/tarena/Test.java
或者使用相对路径:
javac tarena/Test.java
执行完该命令后,在/home/tarena/目录下生成一个Test.class文件.
如何运行这个文件?由于我们只能在包外运行class文件,所以首先要按照包的结构创建目录
mkdir -p a/b
mv Test.class a/b/
然后执行这个class文件(此时终端当前目录为主目录):
java a.b.Test
第二种编译方法(此时终端当前目录为主目录):
javac -d . Test.java
执行该命令后,编译器会根据包结构自动生成相应的目录,对于上面这个程序,则编译生成的class文件位于/home/tarena/a/b/Test.class.
由于相应的目录也已经自动生成,并且当前目录恰是包结构的上层目录,所以此时直接执行该文件,不需要再像上面一样手动创建目录:
java a.b.Test
如果编译时-d的参数不是指定的当前目录,假设执行的命令如下(此时终端当前目录为主目录):
javac -d aaa/bbb Test.java
此时,class文件位于/home/tarena/aaa/bbb/a/b/Test.class.此时要执行该class文件有两种方法:
方法1(此时终端当前目录为主目录):
cd aaa/bbb
java a.b.Test
方法2(此时终端当前目录为主目录):
java -cp aaa/bbb a.b.Test
第三种编译方法:
先把源文件按照包结构放到指定的目录中,即首先执行如下命令(此时终端当前目录为主目录):
mkdir -p a/b
mv Test.java a/b/
然后执行如下命令编译这个文件(此时终端当前目录为主目录):
javac a/b/Test.java
此时的class文件与源文件位于相同的目录,即/home/tarena/a/b/Test.class.
下面执行这个文件:
java a.b.Test
下面总结一下对于带包的类进行编译和执行时的一些要点:
1.编译时,可以不考虑包结构的问题,不论用哪种方法,其实本质都是一样的,只需要让javac命令找到所需要编译的原文件即可.编译时可以用相对或者绝对路径来为javac命令提供源文件的位置信息.
2.初学者易混淆classpath的作用,对于java命令的-cp选项和javac命令的-cp选项,以及配置环境变量时的CLASSPATH.其作用是不变的,都是指定所需要的class文件的位置.所不同的是,执行javac编译时的-cp选项用于指定被编译的源文件需要调用另外的用户自定义类的位置. 执行java命令是根据classpath来寻找所需要执行的class文件的位置.而javac命令不能根据classpath来找源文件,只能根据classpath来寻找所需要用到的类.
下面举例来说明该问题:
假设以下代码(该文件位置:/home/tarena/code/a/b/TA.java):
package a.b;
import c.d.TB;
public class TA
{
public static void main(String[]args)
{
System.out.println("Start to run****");
TB tb = new TB();
javac -d aaa/bbb Test.java
此时,class文件位于/home/tarena/aaa/bbb/a/b/Test.class.此时要执行该class文件有两种方法:
方法1(此时终端当前目录为主目录):
cd aaa/bbb
java a.b.Test
方法2(此时终端当前目录为主目录):
java -cp aaa/bbb a.b.Test
第三种编译方法:
先把源文件按照包结构放到指定的目录中,即首先执行如下命令(此时终端当前目录为主目录):
mkdir -p a/b
mv Test.java a/b/
然后执行如下命令编译这个文件(此时终端当前目录为主目录):
javac a/b/Test.java
此时的class文件与源文件位于相同的目录,即/home/tarena/a/b/Test.class.
下面执行这个文件:
java a.b.Test
下面总结一下对于带包的类进行编译和执行时的一些要点:
1.编译时,可以不考虑包结构的问题,不论用哪种方法,其实本质都是一样的,只需要让javac命令找到所需要编译的原文件即可.编译时可以用相对或者绝对路径来为javac命令提供源文件的位置信息.
2.初学者易混淆classpath的作用,对于java命令的-cp选项和javac命令的-cp选项,以及配置环境变量时的CLASSPATH.其作用是不变的,都是指定所需要的class文件的位置.所不同的是,执行javac编译时的-cp选项用于指定被编译的源文件需要调用另外的用户自定义类的位置. 执行java命令是根据classpath来寻找所需要执行的class文件的位置.而javac命令不能根据classpath来找源文件,只能根据classpath来寻找所需要用到的类.
下面举例来说明该问题:
假设以下代码(该文件位置:/home/tarena/code/a/b/TA.java):
package a.b;
import c.d.TB;
public class TA
{
public static void main(String[]args)
{
System.out.println("Start to run****");
TB tb = new TB();
剩余5页未读,继续阅读
资源评论
awsbamboo115
- 粉丝: 30
- 资源: 164
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功