java - 使用 .java 文件的路径和外部 jar 的路径在 linux 中编译和运行 java 程序

标签 java linux jar javac javacompiler

昨天我在 stackoverflow 上用答案解决了一个问题。但我最终遇到了另一个问题,我会尽量弄清楚:

我在 /home/demo/Desktop/xlsToCsv/ 目录中有一个项目文件夹,其中包含 java 文件 "xlsToCsv.java" 和另一个目录在 /home/demo/Desktop/xlsToCsv/jars 中使用我需要的外部 jar。

现在我需要编译并运行我的程序。昨天我运行了一条命令,假设我已经在 /home/demo/Desktop/xlsToCsv/ 中,命令是:

javac -cp ".:./jars/*" xlsToCsv.java

java -cp ".:./jars/*" xlsToCsv

问题解决了,我可以毫无问题地运行我的程序。但是,我的程序应该从根目录运行,即当我打开 linux 终端时它所在的目录,而不需要发出“cd”命令。

因此,当我打开终端时,.java 文件的路径是:

/home/demo/Desktop/xlsToCsv/

而 jars 文件夹的路径是:

/home/demo/Desktop/xlsToCsv/jars/*

有人可以向我解释我必须做什么,以及这样做的原因吗?因为运行程序比较多,想知道原因,了解java中的classpath机制。

最佳答案

避免使用相对类路径。并替换“./jars/”使用绝对路径“/home/demo/Desktop/xlsToCsv/jars/

编辑:

javac -cp "/home/demo/Desktop/xlsToCsv/jars/*" /home/demo/Desktop/xlsToCsv/xlsToCsv.java

java -cp "/home/demo/Desktop/xlsToCsv/:/home/demo/Desktop/xlsToCsv/jars/*" xlsToCsv

关于java - 使用 .java 文件的路径和外部 jar 的路径在 linux 中编译和运行 java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35337793/

相关文章:

java - 如何在 Java 8 中向 LocalDate 添加天数时跳过周末?

java - 在 php 中使用 js api 使用 Evercookie 创建 cookie 时出现问题

php - 无法将 Php 应用程序与 SharePoint 连接

java - 如何编译一个使用另一个需要 jar 文件的 java 类的 java 文件?

java - 编译器插入的方法(通过类型删除)是否是 volatile 的?

java - 如何设置 java.util.Date 的最小或最大时间值?

linux - 使用 Symfony CMF 的 'app' 文件夹的权限问题

linux - 什么是 LD_RUNPATH?

java - 如何为 ehcache 构建单个 jar?

java - 为什么 getResourceAsStream() 在 JAR 文件中不起作用?