1.报错背景
这个问题困扰了本人很久,因为在本地ide运行代码是没有问题的,只有项目打包后才会出问题。
2.排错流程
也是因为这个问题,我发现了idea可以对jar包进行调试。经过调试我发现是ARQ类中的globalcontext没有被正确初始化。
3.确定原因
让人难以置信的是这两个依赖冲突,具体原因可能是两个依赖有一些重叠的类,无法正确打包
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>jena-arq</artifactId>
<version>3.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.jena</groupId>
<artifactId>apache-jena-libs</artifactId>
<version>3.17.0</version>
</dependency>
4.解决方法
为了正确初始化ARQ这个类,删掉jena-libs只保留jena-arq
5.附上打包方法,这是第一次对非springboot项目打包,主要是把main主类指定出来。类似于python脚本,但是比python脚本麻烦许多。还是python6啊
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.example.controller.UploadToFuseki</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>