我正在尝试使用类似于以下命令编译一个使用两个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字符串无效(在这种情况下,没有导出成功,并且存在编译错误,无论是寄生还是公共)。
我已经看过以前的问题了:
Setting multiple jars in java classpath
Using multiple .jar with javac
包含两个罐子的正确方法是什么?
答案 0 :(得分:11)
不是使用~
,而是更改为真实路径(即/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手册:
你可以看到:
如果单词开头,带有不带引号的代字号('〜'),则所有字符直到第一个未加引号的斜杠(或所有字符,如果没有未加引号的斜杠)被认为是波浪线前缀。
(强调我的),所以只有第一个波浪号被展开,因为第二个波浪号不在单词的开头。