Java 在Eclipse中更改包名称后发生ClassNotFoundException
我正在Eclipse中从事Java动态Web项目。一切都很顺利,直到我意识到我的包名是大写的,并决定更改它们 在更改它们之后,我在运行时得到ClassNotFoundExceptions。代码编译得很好。据我所知,这是一个运行时类路径问题 错误如下所示: javax.servlet.ServletException:实例化servlet类时出错 Controllers.LoginServlet org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源) 根本原因 java.lang.NoClassDefFoundError:模型/转换器 UserHelper.(UserHelper.java:34) Controllers.LoginServlet.(LoginServlet.java:36) sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) sun.reflect.delegatingConstructor AccessorImpl.newInstance(未知 Source)java.lang.reflect.Constructor.newInstance(未知源) java.lang.Class.newInstance(未知源) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源) 根本原因 java.lang.ClassNotFoundException:Model.Converter org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) UserHelper.(UserHelper.java:34) Controllers.LoginServlet.(LoginServlet.java:36) sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源) sun.reflect.delegatingConstructor AccessorImpl.newInstance(未知 Source)java.lang.reflect.Constructor.newInstance(未知源) java.lang.Class.newInstance(未知源) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) java.util.concurrent.ThreadPoolExecutor.runWorker(未知源) java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源) java.lang.Thread.run(未知源) 以下是我的文件夹结构的屏幕截图: src/Controllers和src/Model是我切换到小写的包。我把它们调回原处,希望能解决这个问题,但没有用 我试图通过运行-->运行配置来检查项目的运行时类路径,但项目未在其中列出 以下是我的Web部署程序集的快照: 有人知道我该怎么解决这个问题吗?任何帮助都将不胜感激 找到解决方案 谢谢大家的回复。谢天谢地,我通过以下方式解决了问题:Java 在Eclipse中更改包名称后发生ClassNotFoundException,java,eclipse,jakarta-ee,runtime-error,classnotfoundexception,Java,Eclipse,Jakarta Ee,Runtime Error,Classnotfoundexception,我正在Eclipse中从事Java动态Web项目。一切都很顺利,直到我意识到我的包名是大写的,并决定更改它们 在更改它们之后,我在运行时得到ClassNotFoundExceptions。代码编译得很好。据我所知,这是一个运行时类路径问题 错误如下所示: javax.servlet.ServletException:实例化servlet类时出错 Controllers.LoginServlet org.apache.catalina.authenticator.AuthenticatorBase
还有,瞧。我不确定我的行动为什么或如何解决了这个问题,但如果有人能解释,我很想听听。现在我很高兴它能运行 在web.xml中,有对类Model.Converter的引用。您需要将其更改为model.Converter。如果我们将包名更改为大写,则必须检查该包的所有引用是否都已修改。正如您所说的,如果您尝试使用小写来运行包名,则效果很好。如果您试图用IDE修改包名,那么也会要求更新引用。检查一下
注意:*根据java编码标准,包名应该是小写的。*让我猜一下。windows?我在Eclipse中遇到的大多数类似问题都是由于它是如何发布资源的,通常通过在“服务器”视图中右键单击已配置的服务器并选择“清除”来解决。您能发布web.xml文件的内容吗?我怀疑你有一个