Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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
重新加载Tomcat时发生java.lang.IllegalStateException_Java_Spring_Eclipse_Tomcat_Illegalstateexception - Fatal编程技术网

重新加载Tomcat时发生java.lang.IllegalStateException

重新加载Tomcat时发生java.lang.IllegalStateException,java,spring,eclipse,tomcat,illegalstateexception,Java,Spring,Eclipse,Tomcat,Illegalstateexception,我正在使用Hibernate应用程序处理Spring,它工作正常,但在启动或重新加载tomcat服务器时,我得到了java.lang.IllegalStateException异常 谁能解释一下,为什么会发生这种异常以及如何解决它 INFO:非法访问:此web应用程序实例已停止。无法加载java.net.BindException。最终的后续堆栈跟踪是由出于调试目的以及试图终止导致非法访问的线程而引发的错误引起的,没有任何功能影响。 java.lang.IllegalStateException

我正在使用Hibernate应用程序处理Spring,它工作正常,但在启动或重新加载tomcat服务器时,我得到了
java.lang.IllegalStateException
异常

谁能解释一下,为什么会发生这种异常以及如何解决它

INFO:非法访问:此web应用程序实例已停止。无法加载java.net.BindException。最终的后续堆栈跟踪是由出于调试目的以及试图终止导致非法访问的线程而引发的错误引起的,没有任何功能影响。
java.lang.IllegalStateException
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)
位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
位于com.mysql.jdbc.SQLError.createLinkFailureMessageBasedOnHeuristics(SQLError.java:1220)
位于com.mysql.jdbc.exceptions.jdbc4.CommunicationsException.(CommunicationsException.java:57)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:406)
位于com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
位于com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3270)
位于com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1659)
位于com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4296)
位于com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1265)
位于com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2667)
位于java.lang.System$2.invokeFinalize(未知源)
位于java.lang.ref.Finalizer.runFinalizer(未知源)

在java.lang.ref.Finalizer.access$100(未知源代码)

上,问题是因为服务器缓存。请按照以下步骤修复此问题

  • 在tomcat的根目录下找到名为“work”的目录
  • 完全删除它
  • 重新启动服务器
  • 问题将得到解决


    注意:如果您在linux机器上安装了默认的tomcat,您必须删除文件夹
    /var/cache/tomcat7/Catalina

    ,我想给您两个选择。你可以试试。任何选择都可以满足您的需求

  • 重新启动tomcat和apache服务器
    ,因为长时间使用, 它保留应用程序的旧版本
  • 清理tomcat
    temp
    目录并
    重新启动
  • 如错误中所述
  • 最终的后续堆栈跟踪是由引发的错误引起的 调试目的以及尝试终止 导致非法访问,并且没有功能影响

    这可能是真正的原因,此时您处于调试模式,并且没有清除正在运行的线程。因此,删除断点并运行它,而不是调试

  • 如果您的代码包含未正确终止的任何类型的线程,则可能会发生这种类型的错误。 如果您有
    init()
    方法,但没有
    destroy()
    方法,则可能会发生此类错误。有关详细信息,请点击以下链接-

  • 如果
    webapp已停止或正在停止
    ,这意味着
    .war
    文件或
    WEB-INF/WEB.xml
    时间戳已更改,webapp可能正在重新加载。请检查时间戳是否正确

  • 要关闭它,请在的上下文定义中设置reloadable=“false” 你的应用程序。它可能是tomcat的
    server.xml
    。 具体解决方案: 可重新加载上下文的tomcat的server.xml被设置为false。 例如:

  • 上下文路径=“/expert”docBase=“expert”debug=“0”reloadable=“false”/ 解决方案很简单,只要把tomcat的server.xml在
    reloadable=“true”中改成false就行了,但这样做会失去热部署的优势,而且对于开发来说不是很方便,简单地修改一下就行了。这个错误无关紧要

    错误原则:

    原因是因为tomcat重启,因为之前的tomcat线程还没有完全关闭,重启tomcat会报告此异常,但这并不影响正常使用,只是跳转异常烦人。使用hibernate、spring或其他大型组件,当WEB应用程序系统有很多类时

    如果打开Tomcat
    reloadable=true
    ,则每当相关文档发生更改时,Tomcat都会停止web应用并释放内存,然后重新加载web应用。这可能是一个巨大的项目。所以我们总是认为,如果只有某类重载函数,将极大地满足我们的调试器

    更新:针对代码相关问题

    首先,我想告诉您,我已经为tomcat basis提供了一些解决方案。现在我想给你一个基于代码的解决方案。请将您的代码与此问题进行交叉检查好吗?请按照网址

  • 更新:针对MySQL相关问题

  • 有两个问题

    • 此web应用程序实例已停止。无法加载
      java.net.BindException

    • 此web应用程序实例已被删除 已停止。无法加载
      com.mysql.jdbc

  • 这是因为应用程序上
    WEB-INF/lib
    目录下的MySQL JDBC驱动程序在重新发布其加载的两次后,只要能将其复制到
    %TOMCAT_HOME%/lib
    即可解决问题。 我们可以从移动到
    %TOMCAT\u HOME%/lib
    WEB-INF/lib
    文件夹中解决这两个异常

  • 我怀疑这可能发生在船尾 Context path="/expert" docBase="expert" debug="0" reloadable ="false"/>
    java.lang.IllegalStateException
    
    at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
    at java.lang.ref.Finalizer.access$100(Unknown Source)
    at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)
    
    JNI_DestroyJavaVM();