java - NoClassfoundDefError : 执行 Swing jar 文件时出现 OWLOntologyCreationException
问题描述
我正在使用 Maven 开发 Java Swing 应用程序,并且添加了net.sourceforge.owlapi
5.1.0 版本
<dependency>
<groupId>net.sourceforge.owlapi</groupId>
<artifactId>owlapi-distribution</artifactId>
<version>5.1.0</version>
</dependency>
如果我从 Netbeans 运行应用程序,则完全没有问题,但是当我jar
从构建生成的应用程序运行它并触发调用loadOntologyFromOntologyDocument
方法的侦听器时,我在控制台中找到了noclassdeffounderror : OWLOntologyCreationException
。
这是我打电话时的方法:
try {
File file = new File(baseUrl.split("///")[1] + suffixUrl);
if (file == null) {
return;
} else {
System.out.println("file is null " + file.getAbsolutePath());
}
OWLOntology ontology = manager.loadOntologyFromOntologyDocument(file);
OWLDataFactory factory = manager.getOWLDataFactory();
...
} catch (OWLOntologyCreationException | OWLOntologyStorageException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
该方法loadOntologyFromOntologyDocument
抛出OWLOntologyCreationException
我的内置pom.xml
:
º<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<mainClass>ui.AppFrame</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
[更新] 错误跟踪: 在此处输入图像描述
[更新2] 程序集.xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
<id>full</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<useProjectArtifact>true</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<fileSet>
<directory>data</directory>
<outputDirectory>/data</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>data/projects</directory>
<outputDirectory>/data/projects</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>data/onto</directory>
<outputDirectory>/data/onto</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>data/onto/core</directory>
<outputDirectory>/data/onto/core</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>data/onto/obs</directory>
<outputDirectory>/data/onto/obs</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>data/onto/extern</directory>
<outputDirectory>/data/onto/extern</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
<fileSet>
<directory>data/onto/tech</directory>
<outputDirectory>/data/onto/tech</outputDirectory>
<includes>
<include>*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
解决方案
推荐阅读
- json - Flutter:如何解析对象数组的 JSON 数组
- reactjs - ApexCharts:更改缩放/平移图标的默认蓝色
- javascript - 提交表单时停留在页面的特定部分 Javascript
- extjs - Ext JS 4 过滤器功能没有不必要的排序和菜单
- angular - 在另一种方法中使用时,mat-dialog-box 无法按预期工作
- javascript - 在 d3 中的 html 表中添加单行多列
- sql - sql to r - 选择案例
- jdbc - Teradata JDBC FastExport 性能
- python - Python - 行矩阵中的 4 个 - 变量不会改变
- java - Spring JPA 规范,如数字字段