[英]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)。
我已经看过以下的问题:
包括两个罐子的正确方法是什么?
而不是使用~
,更改为真实路径(即/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.