部署服务器坑杂记

目录

Redis (error) NOAUTH Authentication required

javassist.NotFoundException:

获取包下所有的类,spring的工具

springboot常用启动命令

调整ecelispe中的maven输出的日志级别为DEBUG

java.lang.NoClassDefFoundError: com/sun/istack/FinalArrayList

The POM for XXX is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

Maven:程序包xxx不存在,找不到符号 transitive dependencies (if any) will not be available, enable debug logging f

mysql、datetime确到毫秒的问题

spring boot 使用 JdbcTemplate(Springboot使用jdbc)

spring boot中使用JdbcTemplate https://www.cnblogs.com/web424/p/6756342.html

logback.xml 模板

Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

java.lang.NoClassDefFoundError: javax/servlet/Filter


Redis (error) NOAUTH Authentication required

redis密码不正确,检查设置和配置的密码是否匹配

javassist.NotFoundException:

javassist找不到相关类、可能类加载器还没加载


		ClassPool pool = ClassPool.getDefault();
		ClassClassPath classPath = new ClassClassPath(XXXX.class);
		pool.insertClassPath(classPath);

ClassClassPath手动设置路径

获取包下所有的类,spring的工具

        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
        try {
            String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
                    ClassUtils.convertClassNameToResourcePath(BASE_PACKAGE) + RESOURCE_PATTERN;
            Resource[] resources = resourcePatternResolver.getResources(pattern);
            //MetadataReader 的工厂类
            MetadataReaderFactory readerfactory = new CachingMetadataReaderFactory(resourcePatternResolver);
            for (Resource resource : resources) {
                //用于读取类信息
                MetadataReader reader = readerfactory.getMetadataReader(resource);
                //扫描到的class
                String classname = reader.getClassMetadata().getClassName();
                Class<?> clazz = Class.forName(classname,true,父类的ClassLoader);
            }
        } catch (IOException | ClassNotFoundException e) {
        }

一般来讲是需要找某个接口或者父类的子实现类。

注意:在Class.forName().一定要传入父类的ClassLoader,非常重要。

java机制,即使两个类名字和路径一致,但是不是同一个类加载器也不是一个类。有可能是不同的加载器,特别是用springboot,tomcat等代理的时候。

springboot常用启动命令

nohup java -jar -Xmx512m -Dserver.port=8080 XXX.jar >nohup2.out 2>&1 &

调整ecelispe中的maven输出的日志级别为DEBUG

maven安装目录/conf/logging/simplelogger.properties 中 org.slf4j.simpleLogger.defaultLogLevel=info 最后的info改日志级别

java.lang.NoClassDefFoundError: com/sun/istack/FinalArrayList

引入istack-commons-runtime代码,maven如下

		<!-- https://www.pangugle.com/lib/maven/view/com.sun.istack/istack-commons-runtime.html -->
		<dependency>
			<groupId>com.sun.istack</groupId>
			<artifactId>istack-commons-runtime</artifactId>
			<version>4.0.0</version>
		</dependency>

The POM for XXX is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details

Maven 传递依赖问题 ,更大可能是包没下载全,是错误的包体。删除对应包,重新下载后刷新几次即可。

Maven:程序包xxx不存在,找不到符号 transitive dependencies (if any) will not be available, enable debug logging f

Maven 传递依赖问题 ,更大可能是包没下载全,是错误的包体。删除对应包,重新下载后刷新几次即可。

mysql、datetime确到毫秒的问题

DATETIME(3) 即可精确到毫秒,不填长度,是秒。

spring boot 使用 JdbcTemplate(Springboot使用jdbc)

spring boot中使用JdbcTemplate https://www.cnblogs.com/web424/p/6756342.html

链接如上,简单处理。

如下,maven导入

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

yml配置

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/${name}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF8
    username: ${username}
    password: ${password}

代码中使用

@Autowired
JdbcTemplate jdbcTemplate ;

public void create(String createTableSql){
 jdbcTemplate.execute(createTableSql);
}

logback.xml 模板

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<!-- 尽量别用绝对路径,如果带参数不同容器路径解释可能不同,以下配置参数在pom.xml里 -->
	<property name="log.root.level" value="INFO" /> <!-- 日志级别 -->
	<property name="log.other.level" value="INFO" /> <!-- 其他日志级别 -->
	<property name="log.base" value="${catalina.base}/logs" /> <!-- 日志路径,这里是相对路径,web项目eclipse下会输出到eclipse的安装目录下,如果部署到linux上的tomcat下,会输出到tomcat/bin目录 
		下 -->
	<property name="log.moduleName" value="模块名称" />  <!-- 模块名称, 影响日志配置名,日志文件名 -->
	<property name="log.max.size" value="500MB" /> <!-- 日志文件大小 -->

	<!--控制台输出 -->
	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread] [%logger{0}.%M:%L] %line - %msg%n</pattern>
		</encoder>
	</appender>

	<!-- 日志文件输出 -->
	<appender name="file"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<File>${log.base}/${log.moduleName}.log</File><!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 
			是web项目会保存到Tomcat的bin目录 下 -->
		<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${log.base}/archive/${log.moduleName}_all_%d{yyyy-MM-dd}.%i.log.zip</FileNamePattern>
			<!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 -->
			<timeBasedFileNamingAndTriggeringPolicy
				class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>${log.max.size}</maxFileSize>
			</timeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<!-- 日志输出的文件的格式 -->
		<layout class="ch.qos.logback.classic.PatternLayout">
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm} %-5level[%thread] [%logger{0}.%M] - %msg%n</pattern>
		</layout>
	</appender>

	<!-- 指定包不同日志级别 -->
	<logger name="指定包路径" additivity="false">
		<level value="DEBUG" />
		<appender-ref ref="stdout" />
		<appender-ref ref="file" />
	</logger>
	<!-- root将级别为“DEBUG”及大于“DEBUG”的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console -->
	<root level="info">
		<appender-ref ref="stdout" /> <!-- 标识这个appender将会添加到这个logger -->
		<appender-ref ref="file" />
	</root>
</configuration>  

Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

可能是没加导入包


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

java.lang.NoClassDefFoundError: javax/servlet/Filter

要加入 spring tomcat的导入,注意,这里加servlet-api.jar导入意义不大,还会有其他报错

!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><!-- <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> 
			</dependency> -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<!--<scope>provided</scope> -->
		</dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值