java 命令行编译
来源:互联网 发布:淘宝三星s8 编辑:程序博客网 时间:2024/05/21 06:59
使用java和javac命令的几种情况:
1、单独的一个java主程序;
2、带包的一个java主程序;
3、同一个包的两个类,一个引用另一个;
4、引用不同包的其它类。
1、单独的一个java主程序
public class Joeytang{
public static void main(String[] args) {
System.out.println("I am JoeyTang.");
}
}
将命令行到该java文件同一目录;直接输入命令javac Joeytang.java则会在当前的文件夹下出现Joeytang.class类文件。如果想指定编译的同时将编译好的类文件放到一个文件夹下则可以使用-d指定路径。例如javac -d ./ Joeytang.java则是在当前目录下,javac -d ../ Joeytang.java 在上一个文件夹,javac -d ../ a Joeytang.java则是在上一个文件夹下的a文件夹下,但是一定要保证指定的文件路径存在。运行该类文件,首先保证该类是具有main方法的类。然后编译完以后,使用java -classpath .; Joeytang就可以运行了。我开始没有加-classpath选项,老是提示说找不到类。所以一定要记住在这里加入该选项。具体该选项的作用是说在运行时调用了外部的类或者包时在这里注明,即如果使用了a.jar则要加上-classpath .;a.jar其中前面的那个“.;”我理解成是把环境变量中配置的jar文件拿进来。
2、带包的一个java主程序
pakage my.friends
public class Joeytang{
public static void main(String[] args){
System.out.println("I am JoeyTang.");
}
}
这里面将Joeytang放到了my.friends包里面在编译的时候进入到Joeytang.java同一目录,使用和上面一样的javac命令,这时候会在同一目录创建类文件,但是如果想让编译的时候将包的结构也创建出来则可以使用-d选项,javac -d ./ Joeytang.java,这时候会在当前目录下自动根据包的结构形式创建文件目录,即创建my/friends/文件件,并将编译好的类文件放在friends文件夹下。运行的时候使用java my.friends.Joeytang来运行。
3、同一个包的两个类Joeytang.java文件为
pakage my.friends
public class Joeytang{
public String toString(){
return "Joey";
}
}
Sunnylu.java文件为
pakage my.friends
public class Sunnylu{
public static void main(String[] args){
Joeytang joey = new Joeytang();
//System.out.println("I am Sunney."+joey.toString()+" is my friend.");
System.out.println("I am Sunney."+joey+" is my friend.");
}
}
这种情况中Sunnylu类引用了Joeytang所以必须先编译Joeytang按照第二种情况将Joeytang编译,此时开始编译Sunnylu,注意要使用javac -classpath .; -d ./ Sunnylu.java,此时加入了-classpath选项,我也不知道为什么,但是如果不加编译老是提示找不到Jeoytang这个。编译完以后,来运行Sunnylu也要加入-classpath选项,java -classpath .; my.friends.Sunnylu
4、引用不同包的其它类
Tom.java文件为
package my.partners;
public class Tom{
public String toString(){
return "It's Tom";
}
}
Sunnylu.java文件为
pakage my.friends
import my.partners.Tom;
public class Sunnylu{
public static void main(String[] args) {
System.out.println( "I am Sunny.");
Tom tom = new Tom();
System.out.println(tom + " is my partner.");
Joeytang joey = new Joeytang();
System.out.println(joey + " is my friends.");
}
}
这种情况首先把Joeytang编译了,然后编译Tom类,因为Tom为外部类所以在编译Sunnylu的时候一定要在-classpath注明Tom的路径例如如果我把Tom类编译到当前目录的上一级目录上去了,则编译Sunnylu时使用javac -classpath .;../ -d ./ Jerry.java,此时编译时会到上一目录按照Tom的包结构来找Tom类。运行时一样要加入这个选项。
××××××××××××××××××××××××××××××××××××××××××
Exception in thread "main" java.lang.NoClassDefFoundError
程序:
public class TEST{
public static void main (String args[]){
System.out.println("HELLO THIS iS A JAVA PROCEDURE");
}
}
在命令提示符下
D:java>javac TEST.java
正常
D:java>java TEST
出现下面问题:Exception in thread "main" java.lang.NoClassDefFoundError: TEST
解决:
Exception in thread "main" java.lang.NoClassDefFoundError: Hello
这个错误的原因就是:java解释器找不到你自己定义的类HelloWorld
假如Hello.class在D盘D:/java目录下, java.exe在C:/Java/jdk1.5.0_02/bin目录下
有两种解决办法:
1. 在命令行模式下敲入
c:>C:/Java/jdk1.5.0_02/bin/java -classpath D:/java Hello
注意, 在HelloWorld前面有一个空格.
2. 在命令行模式下输入
c:>set classpath=D:/java
c:>C:/Java/jdk1.5.0_02/bin/java Hello
以上两种方法的本质都是设定正确的classpath, 使得java
能够找到你自己定义的类.
- java 命令行编译
- java 命令行编译多个包
- Java命令行编译源程序
- 命令行编译java文件
- java命令行编译小记
- linux命令行编译java
- java命令行 编译 运行
- 命令行编译、运行java
- java命令行编译
- 命令行编译运行java
- 命令行编译运行java
- 命令行编译 java 接口类
- java命令行编译使用mysql
- java命令行编译 批处理写法
- java 命令行编译运行程序
- 命令行下编译java程序
- javac 命令行编译 java程序
- java 命令行 编译 执行程序
- static函数主要有两个作用:
- c语言面试题大汇总
- Java作业05(第7章 常用实用类)
- 字符数组VS字符指针
- 说说asp.net页面之间传递数据
- java 命令行编译
- //寄存器类型标识符
- Opera 10.50 不仅仅是快(图)
- vc中string和string.h的区别
- 介绍Flex的ButtonBar和ToggleButtonBar控件
- AfxBeginThread()用法
- 程序员的代码就像女人的脸
- 读书笔记博客专用
- 数据库中英文混合排序