上面的結果返回為null getResource方法要註意類路徑 測試後發現方法參數為 ,返回的url是類路徑的。 maven工程編譯後的class文件目錄結構的類路徑,不需要以 開頭。 就正常了 ``` ...
URL url = this.getClass().getClassLoader().getResource("/" + packageName.replaceAll("\\.", "/"));
上面的結果返回為null
嚴重: StandardWrapper.Throwable
java.lang.NullPointerException
at com.kaikai.servlet.MyDispatcherServlet.doScanner(MyDispatcherServlet.java:153)
at com.kaikai.servlet.MyDispatcherServlet.init(MyDispatcherServlet.java:35)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1088)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5176)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5460)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
at java.util.concurrent.FutureTask.run(FutureTask.java)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
getResource方法要註意類路徑
public class MyTest {
public static void main(String[] args) {
MyTest myTest = new MyTest();
// URL url = myTest.getClass().getClassLoader().getResource("/");
URL url = myTest.getClass().getClassLoader().getResource("");
System.out.println(url);
}
}
測試後發現方法參數為""
,返回的url是類路徑的。
maven工程編譯後的class文件目錄結構的類路徑,不需要以/
開頭。
URL url = this.getClass().getClassLoader().getResource(packageName.replaceAll("\\.", "/"));
就正常了
```