部署项目到Linux踩的坑

一、tomcat版本不一致

在windows上开发时用的tomcat9,实现javax.servlet.Filter的实现类无需重写init()和destroy(),

但我在Linux上安装的tomcat是8.5,javax.servlet.Filter的实现类需要重写init()和destory()。

导致我能访问到linux上tomcat主页,但是不能访问部署的项目,在日志文件中发现全是java.lang.AbstractMethodError报错。

在过滤器中实现了init()和destory()方法后重新打包部署就能访问了。

二、验证码图片加载不出来

这里在博客园看到一个大佬发的,在这记录一下

 

用java写了一个验证码功能,把项目放linux服务器下之后图片显示不出来,后来同事找到了原因。

1.什么是Headless mode?
Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。

2.何时使用和headless mode?
Headless模式虽然不是我们愿意见到的,但事实上我们却常常需要在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。

3.如何使用和Headless mode?
一般是在程序开始激活headless模式,告诉程序,现在你要工作在Headless mode下,就不要指望硬件帮忙了,你得自力更生,依靠系统的计算能力模拟出这些特性来:
System.setProperty("java.awt.headless","true");

解决:

生成图片的java文件里写:

public class RandomNumUtil {

    static{
        System.setProperty("java.awt.headless", "true");
    }

}

原文地址:https://www.cnblogs.com/zf2011/archive/2011/11/23/2260658.html

加上那段代码就能显示了,666.

三、部分css样式缺失

有些元素没有样式了,打开控制台发现请求css的响应都是404,还有一些请求js的也是404,还不知道为啥。。。

--------------------------------------------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------------

原因是:

  之前写项目的时候 在某些页面配置了<base>标签,而base中设置的项目名和部署的不一致,导致访问404,把部署的项目名改成跟base标签一样的就行了

posted @   ygdgg  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示