Java can';如果使用Apache2(而不是Tomcat),则找不到翻译文件

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一起使用。我的

我有一个带有TranslationService类的JavaSpring应用程序(maven),该类从JSON文件(backend.JSON)返回翻译后的字符串。。 当我构建我的项目(
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());