Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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
Java 在Eclipse中更改包名称后发生ClassNotFoundException_Java_Eclipse_Jakarta Ee_Runtime Error_Classnotfoundexception - Fatal编程技术网

Java 在Eclipse中更改包名称后发生ClassNotFoundException

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

我正在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部署程序集的快照:

有人知道我该怎么解决这个问题吗?任何帮助都将不胜感激

找到解决方案

谢谢大家的回复。谢天谢地,我通过以下方式解决了问题:

  • 右键单击项目文件夹-->生成路径-->配置生成路径
  • 导航到“源”选项卡
  • 我看到默认的输出文件夹是“WorkTicketSystem/build/classes”。我将其切换为“WorkTicketSystem/WebContent/WEB-INF/classes”

  • 还有,瞧。我不确定我的行动为什么或如何解决了这个问题,但如果有人能解释,我很想听听。现在我很高兴它能运行

    在web.xml中,有对类Model.Converter的引用。您需要将其更改为model.Converter。

    如果我们将包名更改为大写,则必须检查该包的所有引用是否都已修改。正如您所说的,如果您尝试使用小写来运行包名,则效果很好。如果您试图用IDE修改包名,那么也会要求更新引用。检查一下


    注意:*根据java编码标准,包名应该是小写的。*

    让我猜一下。windows?我在Eclipse中遇到的大多数类似问题都是由于它是如何发布资源的,通常通过在“服务器”视图中右键单击已配置的服务器并选择“清除”来解决。您能发布web.xml文件的内容吗?我怀疑你有一个