为 .java 源文件定位对应的 .classpath 文件

Posted

技术标签:

【中文标题】为 .java 源文件定位对应的 .classpath 文件【英文标题】:Locating the corresponding .classpath file for a .java source file 【发布时间】:2018-03-08 18:31:51 【问题描述】:

假设我有一个 java 文件C:\workspace\project\src\packagename\foobar.java。现在,我想在运行时编译这个文件,但为此我需要位于C:\workspace\project\.classpath 的相应.classpath 文件(或者更确切地说,它的条目),以便我可以使用-classpath 参数传递依赖项(如果我对它进行硬编码,这种方法就可以工作,但这显然只是概念验证,而不是目标)。

我将如何查找.classpath 文件?

我的想法是自下而上地遍历文件树,从 foobar.java 开始,直到我到达一个存在 .classpath 文件的级别,然后我可以使用它。

但是,我 a) 不确定这是不是这样做的方法,并且 b) 不确定 如何 自下而上遍历文件树,除了 String.split-ting文件并删除段,从末尾开始。不过,这太丑了,我拒绝相信没有更好的选择。

【问题讨论】:

我相信你的意思是评论你的答案,虽然^^ @GhostCat 你将被赦免:P 【参考方案1】:

听起来你在问如何编写理解eclipse项目目录的布局和结构的Java代码。然后为您“模仿” eclipse 并编译文件。

这可能是一个非常糟糕的主意。你看,除非你只是在谈论非常小的和“缩减”的项目,否则迟早你会遇到很大的项目,而且每个项目都有点不同。你会不断地尝试把事情做对,每次你修复了一个错误,另一个项目就会出现,一些新的东西会出现,你的解决方案就会中断。因为除非您使用该构建代码,否则您无法获得 Eclipse 构建代码的健壮“副本”。

因此我的建议:

如果有办法通过命令行驱动 eclipse(或任何你正在谈论的 IDE 项目文件)。使用知道如何构建这些东西的构建代码。请参阅 here 如何为 eclipse 执行此操作。 查看是否可以将此类项目更改为具有 maven/gradle 构建配置。因为那样你就可以轻松使用 maven/gradle 构建那个东西

【讨论】:

ant 呢?我的意思是,如果我不想使用 maven 或 gradle... @zlakad 好吧,现在是 2018 年,不是吗? ant 肯定是一个选项,但感觉更像是 2005 年。意思是:当您今天开始考虑构建系统时,选择 ant 可能表明某些东西关于解决方案是可疑的。 是的,但是当我们切换到 JDK 9 + 时,我觉得所有这些工具都会过时 项目有gradle构建文件。我想做的是进行一些测试,应用一系列执行一些基本替换操作的正则表达式,然后再次执行更改后的测试以查看是否发生任何错误。如果是这样,我在 Eclipse 中打开失败的测试。无论如何,我对在运行时使用 gradle 构建项目一无所知。你知道一个好的开始吗? 首先打开命令外壳并手动运行 gradle。然后取相应的命令让它们用java运行。

以上是关于为 .java 源文件定位对应的 .classpath 文件的主要内容,如果未能解决你的问题,请参考以下文章

java源文件编译时要放在哪里?

tomcat+jdk部署

UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答

IDEA打开XXX.java文件所对应的XXX.class在资源管理器中

centos下配置java环境变量

path和classpath的区别