Java中带包的类的编译与执行
来源:互联网 发布:女生喜欢肌肉男知乎 编辑:程序博客网 时间:2024/06/06 03:42
转自http://blog.csdn.net/wbrs13/article/details/4859880
以HelloWorld.java
- package
a.b; - public
class HelloWorld{ -
public static void main(String[] args){ -
System.out.println("Hello World!" ); -
} - }
下面根据不同的编译方法来讨论:
第一种编译方法(
假设当前目录为/src/java/
补充:
假设当前目录为/src/
第二种编译方法(
假设当前目录为/src/java/
补充:javac -d . *.java 命令中的 “-d”则是设置类文件的目标目录。如果某个类是一个包的组成部分,则 javac 将把该类文件放入反映包名的子目录中,必要时创建目录。
说明:"."
javac -d c/d HelloWorld.java
说明:c/d
假设当前目录为/src/
说明:生成的HelloWorld.class
javac -d java/c/d java/HelloWorld.java
第三种编译方法(先把源文件按照包结构放到指定的目录中,然后执行编译命令)
假设当前目录为/src/java/,先在目录中创建目录/a/b,然后编译命令:
javac a/b/HelloWorld.java
下面总结一下对于带包的类进行编译和执行时的一些要点:
1、编译时可以不考虑包结构的问题,不论用哪种方法,其实本质都是一样的,只需要让javac命令找到所需要编译的原文件(*.java)即可。编译时可以用相对或者绝对路径来为javac命令提供源文件的位置信息。
2、 初学者易混淆classpath的作用,对于java命令的-cp选项和javac命令的-classpath选项,以及配置环境变量时的 CLASSPATH.其作用是不变的:都是指定所需要的class文件的位置。所不同的是,执行javac编译时的-classpath选项用于指定被编 译的源文件需要调用另外的用户自定义类的位置.。执行java命令是根据classpath来寻找所需要执行的class文件的位置;而javac命令不 能根据classpath来找源文件,只能根据classpath来寻找所需要用到的类。
下面举例来说明该问题:
假设以下代码(位置:/src/java/code/a/b/TestT.java):
- package
a.b; - import
c.d.T; - public
class TestT { -
public static void main(String[] args) { -
T t = new T(); -
t.p(); -
} - }
引入的文件(位置:/src/java/code/tmp/c/d/T.java)
- package
c.d; - public
class T { -
public void p(){ -
System.out.println("class:T"); -
} - }
假设现在编译两个文件(目录:/src/java/),则编译命令为:javac -classpath code/tmp code/a/b/TestT.java 执行命令为:java -cp code;code/tmp a/b/TestT
如果当前目录为:/src/java/code/,则编译命令为:javac -classpath tmp a/b/TestT.java执行命令为:java -cp .;tmp a/b/TestT
假设现在编译不同磁盘的三个文件(目录:e:/src/java/),则编译命令为:
假设以下代码(位置:e:/src/java/code/a/b/TestT.java):
- package
a.b; - import
c.d.T; - import
e.f.T1; - public
class TestT { -
public static void main(String[] args) { -
T t = new T(); -
t.p(); -
T1 t1 = new T1(); -
t1.p(); -
} - }
引入的文件1(位置:d:/java/code/tmp/c/d/T.java)
- package
c.d; - public
class T { -
public void p(){ -
System.out.println("class:T"); -
} - }
引入的文件2(位置:c:/code/tmp/e/f/T1.java)
- package
e.f; -
public class T1 { -
public void p(){ -
System.out.println("class:T1"); -
} - }
如果当前目录为:e:/src/java/
编译命令为:javac -classpath d:/java/code/tmp;c:/code/tmp code/a/b/TestT.java执行命令为:java -cp code;d:/java/code/tmp;c:/code/tmp a/b/TestT
说明:javac命令中的classpath必须指定引入类的路径;同样java命令中的cp必须引入引入类的class的路径也需指定执行类的路径
- Java中带包的类的编译与执行
- Java中带包的类的编译与执行
- Java中带包的类的编译与执行
- Java中带包的类的编译与执行
- Java 中带包的类的编译与执行
- 关于java的编译与执行
- 黑马程序员-java的编译与执行
- 解释执行与编译执行的区别
- Java代码的编译、执行
- 代码的编译连接与执行过程
- 程序的编译链接与执行--IAR
- c的编译链接与执行
- java 编译和加载和执行类的全过程
- Java类从编译到执行的那些事
- Java代码编译和执行的整个过程
- java的一次编译多次执行机制
- Java代码编译和执行的整个过程
- Java程序的编译、执行和打包
- caffe官网教程中siamese例子,画特征错误提示及解决办法
- 通过bundle id打开应用
- Android应用之——不要将数据存储在Application类中
- FMDB的使用
- 大型网站技术架构
- Java中带包的类的编译与执行
- 今日学习札记——C++指针3(11.4)
- Network Link Conditioner
- [重新认识cocos2dx---工具篇] 一 cocos命令行之语言包MultiLanguage
- Gradle 笔记——Java构建入门
- xcode7不允许HTTP传输的过渡办法
- mac安装redis3.0.5分布式集群
- HttpClient设置请求超时和读取超时
- ios app 修改名称后,收到的推送通知 显示的仍然是上一个名称 问题