站内搜索: 请输入搜索关键词

当前页面: JAVA 编程资料牛鼻论坛Java & J2SE 技术区→用package组织源文件时如何编译、运行(欢迎补充)

用package组织源文件时如何编译、运行(欢迎补充)

发表新主题   回复此主题

第1楼 2005-12-01 14:39 ljcyu 写道:

用package组织源文件时如何编译、运行(欢迎补充)


最简单的就是使用IDE,或是使用ant方法来编译运行。

有些地方不是很profession,这个算个玉吧,去网上找找相应的更多资料,进行对比,参考参考!

这里假设你的域名是www.yourcompany.com(参考ranchgirl意见作了点修改)

举个例子来说,如果你有两个目录,一个是d:\dev\src,一个是d:\dev\classes。
src下有个目录是com\yourcomapny\serial,下边有你的文件,比如一个是Client.java(包含Client类,该文件的路径就是d:\dev\src\com\yourcomapny\serial\Client.java),如下:
1
2
3
4
5
6
7
8
package com.yourcompany.serial;
class Client
{
    public static void main(String[] args) 
    {
         System.out.println("Client Hello World!");
    }
}

一个是Server.java(包含Server类,该文件的路径就是d:\dev\src\com\yourcomapny\serial\Server.java),
1
2
3
4
5
6
7
8
9
10
11
package com.yourcompany.serial;
import com.yourcompany.util.DispDate;
class Server
{
  public static void main(String[] args) 
  {
    new Client();//Server和Client属于同一个包,所以不需要导入。
    new DispDate().disp();//Server和DispDate不属于同一个包,要导入
    System.out.println("Hello World!");
  }
}

src下还有一个目录,util,路径就是d:\dev\src\com\yourcomapny\util,
其中有个文件委DispDate.java,用来显示当前时间。
1
2
3
4
5
6
7
8
9
package com.yourcompany.util;
import java.util.Date;
public class DispDate 
{
  public void disp() 
  {
    System.out.println(new Date());
  }
}

这样三个java文件准备好之后,确信类路径,已经添加了【.;】。 然后在windows命令行中,到当前目录,也就是d:\dev\src,
在该目录下可以对Server.java进行编译,

1 class文件和java文件放在同一个目录下

javac com\yourcomapny\serial\Server.java

在src目录下,指定要编译的java文件的完整路径。不然找不到java文件。
这样就会发现Server中需要util包中的DispDate类。自动对其进行编译,
Client也自动得到编译。(编译时查找需要的类的过程可参考inside java中的ch01和ch02)

这样,在util目录下就生成了DispDate.class,在serial目录下生成了Server.class和Client.class。
如果要运行Server,可以使用

java com.yourcompany.serial.Server

前边的serial代表Server所在的包。

2 class和java文件不放在同一个目录下
把java源文件和class文件放在同一个目录下毕竟不是好的组织方法,放在不同的目录下更好,比如,java文件放在src下,class放在classes下。这时候编译为找到正确的类路径,有两种方法,1:在类路径中添加和【d:\dev\classes】,类路径用【;】分隔。 第二种方法,javac有一个选项就是指定输出的class目录,
javac -d ..\classes com\yourcomapny\serial\Server.java

这样,就会把class文件放在classes目录下的相应包下,Client.class放在d:\dev\classes\com\yourcomapny\util下,Serial.java放在d:\dev\classes\com\yourcomapny\serial下。
运行的时候,就需要切换到classes目录下。如果在classpath中添加了classes的路径,就无需切换目录。使用同样的命令来运行
java com.yourcompany.serial.Server

3 ant 方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<project name="jdbc" basedir="." default="run">
    <property name="src" location="src"/>
    <property name="classes" location="classes"/>
    <property name="src.serial" location="${src}/com/yourcomapny/serial"/>
  <property name="src.util" location="${src}/com/yourcomapny/util"/>
    <path id="classpath">     
        <pathelement path="classes"/>
    </path>
  <target name="init">
  <mkdir dir="${classes}"/>
  </target>
    <target name="compile" depends="init">     
        <javac destdir="${classes}"
            fork="false"
            verbose="off" 
            debug="on"
            source="1.5">
            <classpath refid="classpath"/>
          <src path="${src.serial}"/>
          <src path="${src.util}"/>
      </javac>
    </target>
    <target name="run" depends="compile">
      <input message="请输入要运行的类名(包括包名)" addproperty="run.class"/>
        <java fork="true" classname="${run.class}" classpathref="classpath">
        </java> 
  <antcall target="clean"/>
    </target>   
    <target name="clean">
        <delete dir="${classes}"/>
    </target>
</project>

关于ant可以用google,或是baidu搜索一下,以下是一篇:
http://www.java3z.com/cwbwebhome/article/article2/2764.html?id=1271

看完ant之后应该看看这个
http://www.oreilly.com.cn/news/ant15toppractices.php?c=java
ANT十五大最佳实践


第2楼 2013-08-31 12:44 Robot :

用package组织源文件时如何编译、运行(欢迎补充) 相关


第3楼 2005-12-01 17:25 ranchgirl 写道:

Re:用package组织源文件时如何编译、运行(欢迎补充)


I am glad you are using ant!

1
2
   <src path="${src.serial}"/>          
   <src path="${src.util}"/>


better be changed to
1
   <src path="${src}"/>          


Try it!

ANT turorial:
http://bobcat.webappcabaret.net/javachina/faq/ant_01.htm


第4楼 2005-12-04 12:41 ljcyu 写道:

Re:用package组织源文件时如何编译、运行(欢迎补充)


我的意思是限定编译这两个包。编译所有代码当然你的方法更好


第5楼 2005-12-04 21:38 ranchgirl 写道:

Re:用package组织源文件时如何编译、运行(欢迎补充)


Actually, you should have used a stem directory, such as

org.apache.pkg1
org.apache.pkg2

com.mycompany.pkg1
com.mycompany.pkg2

In this way, your future manipulation of your directory become much easier, and also can avoid most of the possible name conflict.

Teach beginners the professional way, not a random way...

Thanks!


第6楼 2005-12-05 03:20 ljcyu 写道:

Re:用package组织源文件时如何编译、运行(欢迎补充)


你说的对,:)。


第7楼 2007-04-25 13:48 erp166 写道:

Re:用package组织源文件时如何编译、运行(欢迎补充)


谢谢!


发表新主题   回复此主题