gpt4 book ai didi

java - 将 .war 文件部署到 tomcat 8 在 IDE 中工作正常但是当我部署到我的 VPS 时我丢失了所有的 JS 和 CSS

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:08:36 24 4
gpt4 key购买 nike

我有一个 spring-boot 应用程序。当我开始在我的 intellij IDE 中运行 Tomcat 8.0_35 时,我没有遇到任何问题,看起来很棒。我决定在我的 VPS 上部署并且只呈现 HTML。我通过手动将 .war 文件放到 webapps 中,在我的本地主机上复制了这个问题。由于我收到了所有 404 错误,我想也许我需要设置一个 webconfig 类:

@Configuration
public class WebConfiguration extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter {

private static final Logger log = Logger.getLogger(WebMvcAutoConfiguration.class);

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.setOrder(Ordered.HIGHEST_PRECEDENCE);

registry.addResourceHandler("/css/**").addResourceLocations("/resources/css/");

registry.addResourceHandler("/image/**").addResourceLocations("/resources/image/");

registry.addResourceHandler("/images/**").addResourceLocations("/resources/images/");

registry.addResourceHandler("/javascripts/**").addResourceLocations("/resources/javascripts/");

registry.addResourceHandler("/libs/**").addResourceLocations("/resources/lib/");

}

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}

@Bean
public DispatcherServlet dispatcherServlet(){
DispatcherServlet dispatcherServlet = new DispatcherServlet();

dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);

return dispatcherServlet;
}

@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML5");
resolver.setOrder(1);
return resolver;
}

}

我需要 ServletContextTemplateResolver,因为我使用的是 spring-mobile 并且我在呈现我的页面时遇到了问题。

我在 tomcat 的日志中没有看到任何内容 localhost.logcataline.log

@SpringBootApplication
public class StidhamFinancialApplication extends SpringBootServletInitializer {

public static void main(String[] args) throws UnknownHostException {
SpringApplication app = new SpringApplication(StidhamFinancialApplication.class);

Environment env = app.run(args).getEnvironment();
System.out.println(String.format("Access URLs:\n----------------------------------------------------------\n\t" +
"Local: \t\thttp://127.0.0.1:%1s\n\t" +
"External: \thttp://%2s:%3s\n----------------------------------------------------------",
env.getProperty("server.port"),
InetAddress.getLocalHost().getHostAddress(),
env.getProperty("server.port")));
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(StidhamFinancialApplication.class);
}
}

我所有的 JS 和 CSS 文件都在我的 IDE 中找到,而且一切似乎都配置正确。我不确定接下来要尝试什么。我已经调试了好几天了,但运气不好。

我把它上传到 git 上 https://github.com/drewjocham/financial

如有任何建议,我们将不胜感激。

日志中唯一提示的是一些 jar 文件:

org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan No TLD files were found in [file:/Library/apache-tomcat-8.0.35/webapps/stidhamfinancial/WEB-INF/lib/jandex-1.1.0.Final.jar]. Consider adding the JAR to the tomcat.util.scan.StandardJarScanFilter.jarsToSkip property in CATALINA_BASE/conf/catalina.properties file.

在我的 logging.properties 中添加了以下内容:

org.apache.jasper.compiler.TldLocationsCache.level = FINE

org.apache.catalina.startup.TldConfig.jarsToSkip=antlr-2.7.7.jar
org.apache.catalina.startup.TldConfig.jarsToSkip=spring-boot-1.3.5.RELEASE.jar
org.apache.catalina.startup.TldConfig.jarsToSkip=groovy-2.4.6.jar
org.apache.catalina.startup.TldConfig.jarsToSkip=javassist-3.18.1-GA.jar
org.apache.catalina.startup.TldConfig.jarsToSkip=aopalliance-1.0.jar

在做了一些研究之后,但这似乎不起作用。但是我不认为这可能是问题所在。

最佳答案

始终使用相对路径来引用资源。

来自您的 index.html 的片段

    <link rel="stylesheet" type="text/css" href="/resources/css/superfish.css"/>
<link rel="stylesheet" type="text/css" href="/resources/css/nivo-slider.css"/>
<link rel="stylesheet" type="text/css" href="/resources/css/jquery.qtip.min.css"/>
<link rel="stylesheet" type="text/css" href="/resources/css/jquery-ui.css"/>
<link rel="stylesheet" type="text/css" href="/resources/css/jquery.fancybox.css"/>
<link rel="stylesheet" type="text/css" href="/resources/css/jquery.fancybox-buttons.css"/>

应该是

    <link rel="stylesheet" type="text/css" href="resources/css/superfish.css"/>
<link rel="stylesheet" type="text/css" href="resources/css/nivo-slider.css"/>
<link rel="stylesheet" type="text/css" href="resources/css/jquery.qtip.min.css"/>
<link rel="stylesheet" type="text/css" href="resources/css/jquery-ui.css"/>
<link rel="stylesheet" type="text/css" href="resources/css/jquery.fancybox.css"/>
<link rel="stylesheet" type="text/css" href="resources/css/jquery.fancybox-buttons.css"/>

解释

当有人在 URL/资源的开头使用“/”时,浏览器将尝试从 Web 服务器的 ROOT 上下文加载该资源。 Web 服务器的根上下文可能与您的应用程序相同,也可能不同,因为应用程序可以部署在根上下文或任何其他上下文中。

始终建议使用相对路径来链接您的资源

您应该为所有静态网址使用相对路径。我还发现许多资源在您的 github 存储库中不可用,例如 superfish.css。包括他们将导致 404 的其他内容

关于java - 将 .war 文件部署到 tomcat 8 在 IDE 中工作正常但是当我部署到我的 VPS 时我丢失了所有的 JS 和 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com