Java can';如果使用Apache2(而不是Tomcat),则找不到翻译文件
我有一个带有TranslationService类的JavaSpring应用程序(maven),该类从JSON文件(backend.JSON)返回翻译后的字符串。。 当我构建我的项目(Java can';如果使用Apache2(而不是Tomcat),则找不到翻译文件,java,spring-boot,apache2,virtualhost,proxypass,Java,Spring Boot,Apache2,Virtualhost,Proxypass,我有一个带有TranslationService类的JavaSpring应用程序(maven),该类从JSON文件(backend.JSON)返回翻译后的字符串。。 当我构建我的项目(mvncleanpackage)时,我会得到我的{project}-{version}.jar文件。如果我执行这个文件(java-jar-target/*.jar),所有的工作都很好, 我可以看到我的页面,一切正常 但我现在有一个问题。在我的项目的生产版本中,我将Apache2与VirtualHost一起使用。我的
mvncleanpackage
)时,我会得到我的{project}-{version}.jar文件。如果我执行这个文件(java-jar-target/*.jar
),所有的工作都很好,
我可以看到我的页面,一切正常
但我现在有一个问题。在我的项目的生产版本中,我将Apache2与VirtualHost一起使用。我的测试配置如下所示:
<VirtualHost *:80>
ServerName myloc
ProxyPass / http://localhost:8080/
</VirtualHost>
错误:
"message":"java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: java.io.FileNotFoundException: File './src/main/webapp/i18n/de/backend.json' does not exist"
因为您的路径是相对于工作目录的,所以您应该首先检查文件是否放置在正确的位置 要记录工作目录,可以如下所示:
System.out.println("Current dir:"+new java.io.File( "." ).getCanonicalPath());
或者您可以使用文件的绝对路径(我也不建议这样做)。现在您可以从程序工作目录中检查相对路径 但是您的文件位于resources文件夹中,并打包到jar中,因此您不会找到“/src…”
您应该以不同的方式访问资源。(示例:)路径是相对于工作目录的,只需使用
System.out.println(file.getCanonicalPath())打印绝对路径即可。
了解结果路径不正确的原因
System.out.println("Current dir:"+new java.io.File( "." ).getCanonicalPath());