信息 java.lang.IllegalStateException: 没有输出文件夹

41

我是在Windows上初次接触Tomcat。我正在尝试将在RHEL 5上制作的Java项目部署到Tomcat上。现在我想在Windows上运行该项目。因此,我将我的项目文件夹复制并粘贴到Tomcat Web应用程序目录中。

i.e C:\Program Files\apache-tomcat-6.0.37\webapps

但是我在打开我的第一个登录页面时遇到以下错误,因此无法运行该项目。 我需要在代码或web.xml文件中进行进一步更改吗?因为我现在正在Windows上部署它。

type Exception report

message java.lang.IllegalStateException: No output folder

**Description** The server encountered an internal error that prevented
it from fulfilling this request.

Exception

org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:538)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
root cause

java.lang.IllegalStateException: No output folder
    org.apache.jasper.JspCompilationContext.createOutputDir(JspCompilationContext.java:678)
    org.apache.jasper.JspCompilationContext.getOutputDir(JspCompilationContext.java:197)
    org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:514)
    org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:453)
    org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:399)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 logs.

2
这是针对Tomcat 7的,但我认为你遇到的问题是一样的:https://dev59.com/MWkv5IYBdhLWcg3wdQrm - morgano
4
在程序文件夹之外安装Tomcat,或者赋予运行Tomcat的用户在该文件夹内写入的权限。Windows默认情况下禁止普通用户直接访问程序文件夹中的文件。 - Matthias
在设置了Apache服务器后,我遇到了同样的问题。将Apache文件夹的位置从“程序文件”(与您相同)更改为C根目录“C:\apache-tomcat-9”。问题得到解决。之前,我尝试更改文件夹的权限和访问权限,并尝试重新安装Apache,但都没有起作用。希望这能帮助未来访问此问题的人。 - akzhere
12个回答

65

我已经完全授予我的Tomcat目录访问权限。 现在我不再遇到这个错误。 谢谢!!


2
这很有帮助,但解决方案并不简单。在W10上需要5-10个步骤才能完成它。 - Mikhail Ionkin

24

我在Ubuntu 14.04上遇到了类似的问题。

我在进行一些分析时手动删除了工作文件夹,然后在运行tomcat服务器时出现相同的异常。

问题是,当我们访问tomcat的管理应用程序时,需要jsp页面来显示内容,而JSP页面是从生成的类文件中呈现的,这些文件位于work / Catalina / localhost / ....文件夹中。

我手动创建了工作目录,但问题仍未解决。

然后我意识到,因为我手动创建了工作目录,所以tomcat7用户没有写入该目录的权限。将工作目录的所有者从root更改为tomcat7。

sudo chown tomcat7 work

重新启动tomcat service tomcat restart

问题得到解决。

希望对你有所帮助。


1
如果您删除了Tomcat的缓存目录(例如/var/cache/tomcat/),则会出现相同的问题。由于某种原因,Tomcat不会自动重新创建它。解决方法也是一样的:手动创建它,更新所有者并重新启动。 - Skippy le Grand Gourou

7

如果您使用的是Linux/Unix系统,并遇到以下问题:

步骤:

请注意用户和服务名称,例如我的情况是tomcat,您可能使用其他名称...

1. mkdir work
2. sudo chown tomcat work  
3. service tomcat6 restart

2

当您首先作为root帐户启动tomcat时,工作文件夹已经被创建。 您将tomcat作为tomcat帐户运行,因为tomcat帐户没有对./work文件夹的权限,所以会抛出异常。 要解决这个问题,请删除./work文件夹,然后使用tomcat用户重新启动tomcat。


启动Tomcat servlet引擎时出现以下错误:tomcat8 / etc / init.d / tomcat8的结果:202:/ etc / init.d / tomcat8无法创建/ var / lib / tomcat8 / work / catalina.policy ... y不存在,因此它不再尝试创建工作目录...您必须自己创建它。之后,直到您自己创建Catalina目录,仍然会出现“IllegalStateException:No output folder”的错误。 - user3338098

2

检查您的磁盘空间吗?

当我的/分区已满时,我也遇到了这个错误。释放一些磁盘空间让我解决了这个问题。


2

我已经更改了工作目录的权限,现在它可以正常运行...

步骤:
1. 进入tomcat所在的目录
2. 执行以下命令:
sudo chmod 777 work


0

如果适用的话,尝试完全重启服务器


0

我曾经遇到过同样的问题。原来是因为我把它放在了Program Files文件夹中,而Windows不允许Tomcat进行任何更改。我只是将apache-tomcat文件夹移动到了另一个位置。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

0

授予Tomcat目录所有权限

sudo chmod -R 777 /path/to/tomcat/directory

我的是 "/opt/tomcat/"

对我很有效。希望它有所帮助。

注意:不要忘记使用 sudo


-1

给予Tomcat目录完全权限,然后重新启动服务。这对我有效,希望对你也有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接