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

发布于 2024-11-07 15:50:36 字数 436 浏览 0 评论 0原文

我进行了以下设置:

我有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)。

I have the following set up:

I have 4 packages:

  • root/src/terminal - has some java files
  • root/src/mail - has some java files
  • root/src/data - has some java files
  • root/src/main - has a single java file, Main.java

I also have the following files

  • root/bin - a folder to store .class files
  • root/mail.jar - a jar file which has important classes used in my code

Within the root, I would like to enter a terminal command which compiles root/src/main/Main.java and puts the class files in the root/bin location.

Can someone show me the command to do this? I'm on a Mac (running Leopard).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦醒灬来后我 2024-11-14 15:50:36

这里有一个衬里:

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

或者修改上面的内容以在类路径参数中使用绝对路径名;例如

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

Here's the one liner:

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

Alternatively, you could use absolute directory names:

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

In reference to Ant you said "I would rather keep it simple.".

In fact in the long term it is simpler to create a simple Ant build.xml file. The alternative is a bunch of non-portable scripts or batch file ... or lots of typing.


To run the application, assuming that you are still in the /xyz/root directory:

java -classpath bin:mail.jar main.Main

Or on Windows:

java -classpath bin;mail.jar main.Main

Or modify the above to use absolute pathnames in the classpath argument; e.g.

java -classpath /xyz/root/bin:/xyz/root/mail.jar main.Main
梦幻的味道 2024-11-14 15:50:36

不了解您的操作系统?

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

http://ant.apache.org/

Without knowing your operating system?

What you should look into is using Apache Ant. It is a build tool that once installed and configured can utilize a build.xml file in your root to compile class files to a folder as well as package a jar file.

http://ant.apache.org/

甜点 2024-11-14 15:50:36

试试这个:

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

写这篇文章是希望您在 src 文件夹中的类中有包声明,例如 packageterminal;package main;

请参阅:javac 命令中的选项

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


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

try this:

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

This is written hoping that you have package declarations in your classes from src folder like package terminal; and package main;.

See this: Options in javac command

Or use Apache Ant as suggested by maple_shaft.


From comment give by @maple_shaft:
In Unix, Linux operating systems the classpath separator is a colon instead of a semicolon.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文