繁体   English   中英

在Linux中的classpath上使用带有多个特定jar的javac(冒号后冒号不会扩展)

[英]Use javac with multiple specific jars on classpath in Linux (tilde doesn't expand after colon)

我正在尝试通过类似下面的命令编译一个使用两个jar文件(trove和apache commons集合)的java源文件

javac -cp ~/.m2/repository/gnu/trove/trove/3.0.0/trove-3.0.0.jar:~/git-workspace/grid/libs/commons-collections-3.2.1.jar $(find . -name TimeJavaCode.java)

在上面的例子中,公共代码没有被成功包含,并且在我使用commons库时出现编译错误。 如果我颠倒了导入的顺序,那么在我使用trove时会出现编译错误。 我已经尝试导出到变量以及单引号和双引号cp字符串无效(在这种情况下,没有导出成功,并且存在编译错误的trove和commons)。

我已经看过以下的问题:

在java类路径中设置多个jar

使用多个.jar和javac

包括两个罐子的正确方法是什么?

而不是使用~ ,更改为真实路径(即/home/<your username>/... ),它应该按预期工作。

为了澄清,这不是特定于Java的问题,请在shell中尝试:

$ echo ~/.bashrc:~/.bashrc

你应该得到类似的东西:

/home/icyrock.com/.bashrc:~/.bashrc

(当然, icyrock.com取代了您的登录信息)。 第二个〜不会被bash扩展,这就是为什么遇到问题。 您期望它扩展到:

/home/icyrock.com/.bashrc:/home/icyrock.com/.bashrc

这就是为什么你有“第一作品,第二作品”的体验。

看看bash手册:

你可以看到这个:

如果一个单词以不带引号的波浪号('〜') 开头 ,则所有直到第一个未加引号的斜杠的字符(或所有字符,如果没有未加引号的斜杠)都被视为波浪号前缀。

(强调我的),所以只有第一个波浪号被展开,因为第二个波浪号不在词的开头。

暂无
暂无

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

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