用javac编译来自不同目录的文件,引用一个依赖的jar文件?

时间:2011-05-18 11:34:20

标签: java command-line javac

我有以下设置:

我有4个包裹:

  • root / src / terminal - 有一些java文件
  • root / src / mail - 有一些java文件
  • root / src / data - 有一些java文件
  • root / src / main - 有一个java文件,Main.java

我还有以下文件

  • root / bin - 存储.class文件的文件夹
  • root / mail.jar - 一个jar文件,其中包含我的代码中使用的重要类

在root中,我想输入一个终端命令,它编译root / src / main / Main.java并将类文件放在root / bin位置。

有人可以告诉我执行此操作的命令吗?我在Mac上(运行Leopard)。

3 个答案:

答案 0 :(得分:1)

不了解您的操作系统?

您应该关注的是使用Apache Ant。它是一个构建工具,一旦安装和配置,就可以利用root中的build.xml文件将类文件编译到文件夹以及打包jar文件。

http://ant.apache.org/

答案 1 :(得分:1)

试试这个:

javac -cp "/root/mail.jar;/root/src;" -d "/root/bin" Main.java

这是希望您从类package terminal;package main;等src文件夹中获得包声明。

请参阅:Options in javac command

或者按照maple_shaft的建议使用Apache Ant。


来自@maple_shaft的评论:
在Unix,Linux操作系统中,类路径分隔符是冒号而不是分号。

答案 2 :(得分:1)

这是一个班轮:

cd /xyz/root
rm -rf bin/*
javac -d bin -classpath mail.jar -sourcepath src main/Main.java

或者,您可以使用绝对目录名称:

rm -rf /xyz/root/bin/*
javac -d /xyz/root/bin -classpath /xyz/root/mail.jar \
      -sourcepath /xyz/root/src /xyz/root/ main/Main.java

在提及Ant时,你说“我宁愿保持简单。”

事实上,从长远来看,创建一个简单的Ant build.xml文件更简单。另一种选择是一堆非便携式脚本或批处理文件......或者大量输入。


要运行应用程序,假设您仍在/xyz/root目录中:

java -classpath bin:mail.jar main.Main

或在Windows上:

java -classpath bin;mail.jar main.Main

或者修改上面的内容,在classpath参数中使用绝对路径名; e.g。

java -classpath /xyz/root/bin:/xyz/root/mail.jar main.Main