Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javac意外地扩展了在我的类路径中找到的jar_Java_Classpath_Javac - Fatal编程技术网

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

javac意外地扩展了在我的类路径中找到的jar,java,classpath,javac,Java,Classpath,Javac,我遇到了一些我以前在javac中没有见过的奇怪行为,我想知道这次我可能做了什么不同的事情来引起它 我正在用javac编译一个相对简单的应用程序。应用程序依赖于我在类路径参数中提到的几个库 在成功编译之后(尽管我相信有一些来自libs的警告),我最终得到了大量的.class文件,这些文件似乎是从我库文件夹中的jar文件中提取出来的 我从未见过javac像这样扩展我的库,我想阻止它这样做。我唯一的假设是类路径中的通配符的行为可能不同于单独显式引用每个jar 以下是文件夹结构: /loadtest /

我遇到了一些我以前在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>

任何想法都将不胜感激。这显然不是一个表演的障碍,但它正在把我的简单构建变成一个不必要的复杂混乱。谢谢

我认为
javac
根本没有问题,而是您拥有的构建类路径有问题。我怀疑在类路径中有一些jar包含源代码,最明显的是
/loadtest/lib/selenium
目录中的
selenium-java-x.y.z-srcs.jar

由于您尚未在
javac
调用中指定
-sourcepath
参数,Oracle/Sun编译器还将搜索您的用户类路径以查找源文件,如下所述:

标准选项

-cp路径或-classpath路径

指定查找用户类文件的位置, 和(可选)注释处理器和源文件。这 类路径覆盖类路径环境中的用户类路径 变量如果未指定CLASSPATH,-cp或-CLASSPATH,则 用户类路径由当前目录组成。请参见设置 类路径以获取更多详细信息

如果未指定-sourcepath选项,则用户类路径为 还搜索了源文件。

-sourcepath sourcepath

指定要搜索的源代码路径 类或接口定义。与用户类路径一样,源 路径条目由分号(;)分隔,可以是目录, JAR存档或ZIP存档。如果使用包,则本地路径 目录或存档中的名称必须反映包名称。 注意:通过类路径找到的类可能会受到 如果还找到了它们的源,则自动重新编译。参见搜索 对于类型


是的,我没想到javac坏了。我就是搞不懂我到底在干什么。我打赌你在srcs罐子上是对的。我要把它拿出来再试一次,我刚刚从我的开发区复制了我的libs,在那里我有srcs目录作为文档。selenium src jar是我的猜测。它可能是任何其他文件。是的,删除src jar修复了它。感谢您的快速响应和说明,如果没有提供类路径,它将如何作为源路径执行双重任务。您不应该在
.jar
文件中收到关于类的警告。如果从库类收到警告,则表示您正在编译库类。您可能拥有与工作目录相关的库源文件,并且
javac
编译它们,因为它看到它们是从您在命令行上指定的文件中引用的。也感谢您的提示。对于我来说,从我的jar中得到错误并没有什么意义,但它并没有指出它一定是在试图编译除我自己的源代码之外的其他源代码。
javac -classpath .;../lib/*;../lib/selenium/*;../lib/selenium/libs/* com/example/test/AdobeSSOLoadTester.java