Jedis ClassNotFound和NoClassDefFoundError

时间:2018-04-12 20:36:02

标签: java maven redis cytoscape.js

我为数据可视化工具开发了一个插件。现在我想在其中使用redis。当我在另一个项目(不在我的插件中)中尝试从here获取的以下redis代码时,它运行良好。

//Connecting to Redis server on localhost 
  Jedis jedis = new Jedis("localhost"); 
  System.out.println("Connection to server sucessfully"); 
  //check whether server is running or not 
  System.out.println("Server is running: "+jedis.ping()); 

但是当我在插件中使用Jedis时,我遇到Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/JedisCaused by: java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis错误。为了将我的插件安装到此数据可视化工具中。我需要创建一个jar文件,它可以很好地工作而不添加jedit部分。

我正在使用IntelliJ Idea,我创建了一个工件,并从顶部菜单中的build - build artifact选项卡构建id。我还在pom.xml中添加了jedis jar文件作为依赖项(这是一个maven项目),我从项目结构中添加了它作为库,我将jedis jar文件作为提取目录添加为库,并从项目结构的工件选项卡中添加库菜单。然后我将jedis jar文件添加到我的项目.classpath文件中,如下所示:

    <classpathentry kind="src" path="src/main/resources/jedis-2.1.0-sources.jar" including="**/*.java"/>

因此,当我打开我的jar文件时,我可以看到“redis / clients / jedis”路径中有Jedis.java文件。并且我的jar文件的根路径中还有jedis jar文件。但即使它不起作用。它在运行时中给出了上述错误。我在哪里做错了?

1 个答案:

答案 0 :(得分:2)

在loooong研究和“实验”之后我解决了它。这是我添加我的pom.xml以摆脱这个的部分。我还使用“mvn package”命令创建jar文件,而不是从IntelliJ IDEA接口创建。

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-eclipse-plugin</artifactId>
            <version>2.9</version>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>false</downloadJavadocs>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8.0_161</source>
                <target>1.8.0_161</target>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>App.CytoVisProject</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>