前景提要
HDC调试需求开发(15万预算),能者速来!>>> Environment: jdk1.7 javax.servlet-api-3.0.1.jar is needed for this test. Reproduce steps: javac Test1.java -cp javax.servlet-api-3.0.1.jar build Test1.java with javax.servlet-api-3.0.1.jar javac Test2.java -cp javax.servlet-api-3.0.1.jar build Test2.java with javax.servlet-api-3.0.1.jar javac Test3.java build Test3.java But when this command java Test3 run, Exception is thrown. The result at the end of this post. Test1.hello()运行正常,而Test2.hello()运行失败 Test1.java import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; public class Test1 { public void getRequest(HttpServletResponse resp) throws IOException { OutputStream os = resp.getOutputStream(); resp.getOutputStream().close(); } public void hello(String world) { System.out.println("hello " + world); } } Test2.java import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; public class Test2 { public void getRequest(HttpServletResponse resp) throws IOException { OutputStream os = resp.getOutputStream(); try { resp.getOutputStream().close(); } catch (Exception e) { } } public void hello(String world) { System.out.println("hello " + world); } } Test3.java public class Test3 { public static void main(String[] args) { new Test1().hello("world1"); new Test2().hello("world2"); } } output of the final step. Test2.hello("world2") throw an exception: hello world1 Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/ServletOutputStream at cn.test.abc1.Test3.main(Test3.java:9) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletOutputStream at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 6 more I am very confused with the Exception. Because I didn't use any code in the Class ServletOutputStream. And the difference of the Test1 and Test2 is only a try blocked.