繁体   English   中英

使用javac从不同目录编译文件,引用依赖的jar文件?

[英]compile files from different directories with javac, referring a depending jar file?

我有以下设置:

我有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 / src / main / Main.java并将类文件放在root / bin位置。

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

不知道您的操作系统?

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

http://ant.apache.org/

尝试这个:

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

编写此代码是希望您在src文件夹中的类(如package terminal;具有程序包声明package terminal; package main;

看到这个: javac命令中的选项

或使用maple_shaft建议的Apache Ant。


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

这是一个班轮:

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参数中使用绝对路径名; 例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM