gpt4 book ai didi

javac 意外地扩展了在我的类路径中找到的 jars

转载 作者:行者123 更新时间:2023-11-30 07:32:04 25 4
gpt4 key购买 nike

我在使用 javac 时遇到了一些我以前从未见过的奇怪行为,我想知道这次我可能会做些什么不同的事情来导致它。

我正在使用 javac 编译一个相对简单的应用程序。该应用程序依赖于我在类路径参数中引用的一些库。

成功编译后(尽管有一些我认为来自库的警告)我最终得到了大量的 .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,最著名的是 selenium-java-x.y.z-srcs.jar在你的/loadtest/lib/selenium目录。

因为您没有指定 -sourcepath你的论点 javac调用时,Oracle/Sun 编译器还将在您的用户类路径中搜索源文件,如 javac technote 中所述:

Standard Options

...

-cp path or -classpath path

Specify where to find user class files, and (optionally) annotation processors and source files. This classpath overrides the user class path in the CLASSPATH environment variable. If neither CLASSPATH, -cp nor -classpath is specified, the user class path consists of the current directory. See Setting the Class Path for more details.

If the -sourcepath option is not specified, the user class path is also searched for source files.

...

-sourcepath sourcepath

Specify the source code path to search for class or interface definitions. As with the user class path, source path entries are separated by semicolons (;) and can be directories, JAR archives, or ZIP archives. If packages are used, the local path name within the directory or archive must reflect the package name. Note: Classes found through the classpath may be subject to automatic recompilation if their sources are also found. See Searching For Types.

关于javac 意外地扩展了在我的类路径中找到的 jars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com