找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 7188|回复: 2

java命令中javac和java的使用

[复制链接]
发表于 2009-11-25 01:52:01 | 显示全部楼层 |阅读模式 IP:江苏扬州
今天真是太打击了,在学习groovy的groovyc命令时,出现问题。于是我就在想我会使用javac吗?以前只用过最简单的编译过一两个java文件,以后都是用的eclipse。
自己就设想了几种情景的使用,结果居然真的不会用javac和java,弄了一个上午,终于把自己的这点问题解决。但是总还是伤心啊。一个已经开发了三年java程序的人啊。。。先来描述一下几种情况: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+" 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.friends.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类。 运行时一样要加入这个选项。 好了写这么多希望跟我一样郁闷此问题的可以得到些帮助。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/tanghc1983/archive/2008/07/06/2617142.aspx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-10-1 03:21 , Processed in 0.265074 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表