问题1:获取不到配置文件的参数
我的配置文件获取的参数如下:
public class Configures{
@Value("${configmdm.apk.apkName}")
private static String apkName;
private void setApkName(String apkName) {
Configures.apkName = apkName;
}
private Integer getApkName(){
return Configures.apkName;
}
}
Configures.getApkName()获取参数的参数值为null
解决方法:
public class Configures{
private static String apkName;
@Value("${configmdm.apk.apkName}")
private void setApkName(String apkName) {
Configures.apkName = apkName;
}
private Integer getApkName(){
return Configures.apkName;
}
}
原因:@Value不能用到static修饰的值上
问题2:打包jar后,运行报错
之前,我虽然将引用的依赖放到了lib文件夹下,但是程序运行时没有指定具体的启动程序,报错如下:
Exception in thread “main” java.lang.reflect.InvocationTargetException
解决方法:
修改pom.xml文件如下,就可以进行打包了
<plugins>
<!-- 打包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>me.uniauto.mdm.AdminApplication</mainClass>
<useUniqueVersions>false</useUniqueVersions>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录-->
<Class-Path>./resources/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<!--拷贝依赖到jar外面的lib目录-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!--指定的依赖路径-->
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
问题3:项目是分模块的,web模块下启动,扫描不到另一个模块的包
web模块下的项目,使用AdminApplication启动时,扫描不到netty下面的文件
原因:AdminApplication里面的注解@SpringBootApplication,默认只能扫描到当前包下面的文件,AdminApplication所在包为com.demo,只能扫描到com.web.demo下面的文件,
netty模块下包为com.netty,导致启动时,扫描不到netty模块。
解决方法:netty模块下包为com.netty改为com.demo.netty,这样项目启动就扫描到netty模块了
问题4:找不到对应的xx.xml文件
报错问题:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.demo.dao.mappe.userMapper.getAllUser
解决方法:
在resource下面写的包名为com.demo.dao.mapper,AdminApplication文件已经加入了@MapperScan({“com.demo.dao”})
从idea编译工具上,也存在com.demo.dao.mapper包,springboot启动的时候,应该能扫描到com.demo.dao.mapper下的文件,但是就是报这个问题
后来,偶然间,我去本地文件夹下,发现了原因。
本地文件夹竟然有一个名叫 com.demo.dao.mapper的文件夹,其实应该为com的文件夹,com下有demo,这种结构
解决方法:删掉该文件夹,一层层重新创建,就可以了
如果还遇到其他问题,继续记录!!