Mic*_*ael 10 java jar classpath java-ee
在我的Java Web应用程序中,我有以下文件:
/WEB-INF/classes/com/example/Foo.class
/WEB-INF/lib/example.jar <-- contains the class "com.example.Foo"
Run Code Online (Sandbox Code Playgroud)
是否将classes使用目录中定义的类而不是在example.jar?中定义的类?
谢谢.
所以只有一种方法可以找到答案.我写了一个测试:)
??? example
? ??? example.iml
? ??? pom.xml
? ??? src
? ??? main
? ? ??? java
? ? ??? test
? ? ??? Bar.java
? ? ??? Foo.java
? ??? test
? ??? java
? ??? testexample
? ??? TestFoo.java
??? pom.xml
??? test.iml
??? web
??? pom.xml
??? src
? ??? main
? ? ??? java
? ? ??? test
? ? ??? Foo.java
? ??? test
? ??? java
? ??? junittest
? ??? TestFooInWeb.java
??? web.iml
16 directories, 11 files
Run Code Online (Sandbox Code Playgroud)
我的发现是TestFoo.java印刷品
Hello from example.jar
Hello from example.jar
Run Code Online (Sandbox Code Playgroud)
对于TestFooInWeb.java打印
Hello from web app
Hello from web app
Run Code Online (Sandbox Code Playgroud)
两个测试都在测试类中有这个:
public class TestFooInWeb/TestFoo {
@Test
public void testHello() {
System.out.println(new Foo().sayHello());
}
@Test
public void testHelloFromBar() {
new Bar().sayHelloForFoo();
}
}
Run Code Online (Sandbox Code Playgroud)
所以最后,我站得更正了.您显然可以加载一个完全不同的类,所有Jar文件都将使用该新类.这是有道理的,因为ClassLoader它将首先查看classes目录.我不确定我是否同意它,因为它听起来很可疑,我可以覆盖安全类.