我使用 eclipse 作为我的 IDE,将项目保存到我在我的 ubuntu 主服务器上映射的 samba 网络驱动器上。我已将 Eclipse 配置为将我正在使用的 jar 库保存到 /lib 文件夹中。
问题是当我尝试从服务器上的命令行运行我的 java 程序时,我总是必须输入
java -cp .:../lib/* javaclassname
这有点令人厌烦,特别是考虑到制表符补全不适用于必须包含在类路径中的冒号。有什么方法可以设置,所以我不必每次都手动指定类路径?
我使用 eclipse 作为我的 IDE,将项目保存到我在我的 ubuntu 主服务器上映射的 samba 网络驱动器上。我已将 Eclipse 配置为将我正在使用的 jar 库保存到 /lib 文件夹中。
问题是当我尝试从服务器上的命令行运行我的 java 程序时,我总是必须输入
java -cp .:../lib/* javaclassname
这有点令人厌烦,特别是考虑到制表符补全不适用于必须包含在类路径中的冒号。有什么方法可以设置,所以我不必每次都手动指定类路径?
最简单的选择是让 Eclipse 为您构建 JAR。右键单击您的项目,然后选择 Export > Runnable JAR file。该对话框将为您提供一些选项。选择“复制所需的库...”。输出将是您的主应用程序 JAR 文件,以及一个包含您的依赖项的 lib 文件夹。在这种情况下,JAR 文件清单将指定指向所有依赖项的类路径。然后在命令行运行它就像“java -jar myJar.jar”一样简单。
如果你想让事情自动化,我会从 Ant 开始。我认为它比 Maven 的学习曲线要少。在这种情况下,请查看jar
Ant 任务。
我最终通过制作一个名为的 shell 脚本run.sh
并将其放在项目的根文件夹中来解决这个问题。
运行.sh:
#!/bin/bash
LIBS=$(grep '<classpathentry kind="lib" path="' .classpath | sed 's/.*\<classpathentry kind="lib" path="//' | sed 's/\"[^\"]*$//' | tr '\n' ':')
java -cp "bin:$LIBS" $1
您可以通过运行使其可执行chmod u+x run.sh
,然后使用./run.sh packagename.classname
它读取.classpath
根文件夹中的文件并将每个条目添加到命令行上以冒号分隔的列表中。