目录
Redis (error) NOAUTH Authentication required
调整ecelispe中的maven输出的日志级别为DEBUG
java.lang.NoClassDefFoundError: com/sun/istack/FinalArrayList
Maven:程序包xxx不存在,找不到符号 transitive dependencies (if any) will not be available, enable debug logging f
spring boot 使用 JdbcTemplate(Springboot使用jdbc)
spring boot中使用JdbcTemplate https://www.cnblogs.com/web424/p/6756342.html
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>