java.lang.IllegalStateException: No output folder

将正在正常运行的tomcat打包(使用tar -zcvf命令打的包),然后放到其他服务器上使用非root用户解压(使用tar -zxvf命令)配置好之后,启动tomcat后报错如下



HTTP Status 500 - java.lang.IllegalStateException: No output folder
typeException report
messagejava.lang.IllegalStateException: No output folder
descriptionThe server encountered an internal error that prevented 
it from fulfilling this request.
exceptionorg.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:391)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
root causejava.lang.IllegalStateException: No output folder
org.apache.jasper.JspCompilationContext.createOutputDir(JspCompilationContext.java:738)
org.apache.jasper.JspCompilationContext.getOutputDir(JspCompilationContext.java:196)
org.apache.jasper.JspCompilationContext.getClassFileName(JspCompilationContext.java:581)
org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:461)
org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:425)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:639)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
noteThe full stack trace of the root cause is available in the 
Apache Tomcat/7.0.39 logs.


----------------------------------------------------------------------------------------------------------------------------------------

org.apache.jasper.JasperException: java.lang.IllegalStateException: No output folder:
关于这个原因主要是权限的问题,在tomcat/work/Catalina/localhost/,主要是这个目录没有被读写的权限,导致文件不能被编译到该指定的工作目录中,此时我们就要针对与这个目录做一些权限的修改权限至少要达到755或者以上,同时注意此处修改权限必须用root身份进行操作,否则不能进行修改,修改完后编译好的jsp文件就在localhost的目录当中了。发现了问题在于work/Catalina/localhost/中无法生成对应文件,把tomcat整个目录、work整个目录都修改了权限仍然不行。最后到具体的目录tomcat/work/Catalina/localhost/进行修改权限OK。


 我遇到的这个报错,是因为使用root启动过一次服务,后来用其他用户进行服务的启动,而在启动之前没有删除tomcat/work/目录下的内容,该目录下还是存在属主为root用户的Catalina目录,在使用其他用户执行启动时,由于该Catalina已存在,就不再重新创建,而是增量修改该目录,但是由于其他用户没有权限修改属主为root的目录和文件,因此报错。建议在每次停tomcat成功后,删除tomcat/work/*;如果不想每次都删除,一定要保证每次启动tomcat使用的用户要严格正确。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
java.lang.IllegalStateException: No properties是一个异常,表示在代码中找不到配置属性。这个异常通常发生在使用Spring Boot时,没有正确配置@ConfigurationProperties注解的情况下。 解决这个问题的方法是确保在需要配置属性的类上添加@ConfigurationProperties注解,并在属性的getter和setter方法上添加@Value注解。这样Spring Boot就能正确地读取和注入配置属性。 以下是一个示例代码,演示了如何解决java.lang.IllegalStateException: No properties异常: ```java import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "myapp") public class MyAppProperties { private String property1; private int property2; public String getProperty1() { return property1; } public void setProperty1(String property1) { this.property1 = property1; } public int getProperty2() { return property2; } public void setProperty2(int property2) { this.property2 = property2; } } ``` 在上面的示例中,我们创建了一个名为MyAppProperties的类,并在类上添加了@ConfigurationProperties注解,并指定了属性的前缀为"myapp"。然后,我们定义了两个属性property1和property2,并为它们分别提供了getter和setter方法。 通过这样的配置,Spring Boot就能正确地读取和注入配置属性,避免了java.lang.IllegalStateException: No properties异常的发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值