[英]javac unexpectedly expanding jars found in my classpath
我遇到了一些我以前用javac从未见过的奇怪行为,并且想知道这次可能会做些不同的事情来导致它。
我正在用javac编译一个相对简单的应用程序。 该应用程序依赖于我在类路径参数中引用的少数库。
成功编译之后(尽管我相信有些警告来自libs),最终我得到了大量的.class文件,这些文件似乎是从我的库文件夹中的jar文件中提取的。
我从未见过javac会像这样扩展我的库,并希望阻止它执行此操作。 我唯一的假设是,类路径中的通配符的行为可能不同于显式地分别引用每个jar的行为。
下面是文件夹结构:
/loadtest
/loadtest/lib
/loadtest/lib/selenium
<some jars here>
/loadtest/lib/selenium/libs
<some jars here>
/loadtest/src
/loadtest/src/com/example/test
<my java files here>
这是我从/ loadtest / src发出的javac命令
javac -classpath .;../lib/*;../lib/selenium/*;../lib/selenium/libs/* com/example/test/AdobeSSOLoadTester.java
任何想法,将不胜感激。 显然,这不是秀场停止,但它将我的简单构建变成了不必要的复杂混乱。 谢谢!
我认为javac
根本不是问题,而是您拥有的构建类路径。 我怀疑您的类路径中有一些带有源的JAR,尤其是/loadtest/lib/selenium
目录中的selenium-java-xyz-srcs.jar
。
由于您未在javac
调用中指定-sourcepath
参数,因此,如javac
技术说明中所述,Oracle / Sun编译器还将在用户类路径中搜索源文件:
标准选项
...
-cp路径或-classpath路径
指定在何处查找用户类文件,以及(可选)注释处理器和源文件。 该类路径将覆盖CLASSPATH环境变量中的用户类路径。 如果未指定CLASSPATH,-cp或-classpath,则用户类路径由当前目录组成。 有关更多详细信息,请参见设置类路径。
如果未指定-sourcepath选项,则还将在用户类路径中搜索源文件。
...
-sourcepath源路径
指定源代码路径以搜索类或接口定义。 与用户类路径一样,源路径条目之间用分号(;)分隔,并且可以是目录,JAR存档或ZIP存档 。 如果使用软件包,则目录或归档文件中的本地路径名必须反映软件包名称。 注意:如果通过类路径找到的类也可以找到它们的源,则它们可能会自动重新编译。 请参阅搜索类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.