2022-01-26
Multiple markers at this line
- The type org.apache.ibatis.type.TypeHandler cannot be resolved. It is
indirectly referenced from required .class files
- The type org.apache.ibatis.type.JdbcType cannot be resolved. It is
indirectly referenced from required .class files
说明你目前版本的Eclipse太旧了,不支持JDK1.8了,要么换最新版本的Eclipse,要么用IDEA。
有时候,明明pom.xml里添加了外部架包,代码里也能正常运行,查是源码里就是提示报错,说类不存在,刷新这里就好了,maven更新不及时的原因:
外部架包jar里用到了一个Service, 但是本部项目却识别不了它,说bean不存在。
解决办法1:File -> Project Structure -> 左边菜单找到Facets -> 中间菜单选中 Spring(xxx) -> 再点左边框上边沿的+号 ->
在打开的对话框中选 + 号
选中Code-base configurations 然后选中你外部包bean所在的java文件就好。
感觉这个不是最优方案,先这样做吧,反正不报错了。
2022-01-27
如果想Eclipse打我maven jar包可以给idea用,需要共用一个setting.xml文件。
IDEA中 File -> Settings -> 搜索maven
2022-01-28
OxmSerializer的配置。(OxmSerializer是把bean转成xml字符串)
@Configuration public class RedisConfig { @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>(); template.setConnectionFactory(redisConnectionFactory); OxmSerializer serializer = new OxmSerializer(); try{ Jaxb2Marshaller marshaller = new Jaxb2Marshaller();//创建JAXB上下文环境 Map<String,Object> properties = new HashMap<String, Object>();//创建映射,用于设置Marshaller属性 properties.put(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); //放置xml自动缩进属性 marshaller.setClassesToBeBound(Resp.class, String.class);//映射的xml类放入JAXB环境中 marshaller.setMarshallerProperties(properties);//设置Marshaller属性 serializer.setMarshaller(marshaller); }catch(Exception e){ e.printStackTrace(); } template.setDefaultSerializer(serializer); template.setKeySerializer(new StringRedisSerializer());//这个很重要,否则系统key也去序列化 return template; } }
2022-02-10
找不到jar里面的bean,加@SpringBootApplication(scanBasePackages = {"com.dr.iptv.ubp"})
2022-02-14
手动创建的目录src/test/java没有识别为测试代码目录(不能加包package,加类class)。可以选中java目录,右击弹出列表中选“Mark Directory as”
2022-03-14
java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify @BootstrapWith's 'value' attribute or make the default bootstrapper class available.
报这个错,是因为引用了hibernate方式的dao。比如iptv_dao_charge.
java.lang.NoClassDefFoundError: org/springframework/core/ErrorCoded
报这个错,是因为引用了其它的Spring版本,比如iptv_common里就私自引用了spring,把pom.xml里的引用spring注掉,重新打包就好了。
2022-03-23
Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1352) ~[catalina.jar:8.0.52]
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) ~[catalina.jar:8.0.52]
at javax.el.ExpressionFactory.newInstance(ExpressionFactory.java:147) ~[el-api.jar:3.0.FR]
... 86 common frames omitted
SpringBoot如果是用tomcat容器启动的,打的war包中就不能有tomcat_xxxx.jar这样的架包,如果有,就会报错,说生成不了jsp。
用指定jdk启动tomcat
window下:
修改bin/catalina.bat,在命令行前加上变量 set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_271 指定你的jdk根目录
2022-03-24
因为我创建了webapp目录,系统自动识别了这个web文件目录,打包war的时候,让我创建web.xml文件,因为我知道SpringBoot启动是不依赖web.xml启动的。
就从网上随便 找了一个空的web.xml丢进去。(后来悲剧了)
后来写个最简单的jsp,发现jsp不识别EL表达式(${xxxx}),百度一下,jsp文件加一行 <%@ page isELIgnored="false" %>
确实有效,
但每一个jsp加,有点量大,后来搜到一个高手说web.xml2.3不支持,升级一下就好了,后来web.xml我换成
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> </web-app>
3.0之后,jsp就默认支持EL表达式了,不用每一个jsp页面加<%@ page isELIgnored="false" %>了。
打开idea, 出现奇怪的问题,明明是同一个项目中的类,却标红说找不到,关闭idea再打开也不好。
解决办法:idea -> File -> Invalidate Caches... 就好了。
2022-04-01
如果是Eclipse和Idea双平台协作,如果在eclipse修改了,一定要maven install, 要不然在idea不是最新的。
在idea中修改了pom.xml并不会生效,需要点刷新:
2022-05-05
1、tomcat启动,没有进入springboot
MyApplication要继承SpringBootServletInitializer并实现configure方法
public class MyApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(MyApplication.class); } }
2、
2022-05-05 11:33:56.971 ERROR (SpringApplication.java:819)- Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultValidator' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultParameterNameProvider()Ljavax/validation/ParameterNameProvider; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.14.jar:5.3.14] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.14.jar:5.3.14] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.14.jar:5.3.14] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.14.jar:5.3.14] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5
后来发现是lib下面有2个hibernate-validator,删除一个低版本的重启就ok了。