我正在尝试将Joda-Time与我的bukkit插件一起使用,但是我遇到了ClassNotFoundException和NoClassDefFoundError。
我正在使用eclipse并将其添加到我的Build Path中,并在jar中的MANIFEST中修改了我的Class-Path变量(然后将jar添加到我的jar文件之外的lib文件夹中),以及尝试过在我的jar文件中添加joda-time jar文件。
所以让自己更清楚...... ClassNotFoundException出现了,当我手动将文件添加到我的jar中时,NoClassDefFoundError出现了。
我尝试将我的项目转换为maven(通过eclipse)并将joda-time添加为pom.xml的依赖项,但我似乎无法将其工作(也许我正在做出错了。)
如果您需要更多信息,请询问。我不确定还包括哪些内容。
感谢您提供任何帮助。
java.lang.NoClassDefFoundError: org/joda/time/ReadableInstant
at com.**********.plugin.UMSBase.registerEvents(UMSBase.java:46)
at com.***********.plugin.UMSBase.onEnable(UMSBase.java:22)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
at org.bukkit.craftbukkit.v1_5_R2.CraftServer.loadPlugin(CraftServer.java:282)
at org.bukkit.craftbukkit.v1_5_R2.CraftServer.enablePlugins(CraftServer.java:264)
at net.minecraft.server.v1_5_R2.MinecraftServer.j(MinecraftServer.java:303)
at net.minecraft.server.v1_5_R2.MinecraftServer.e(MinecraftServer.java:282)
at net.minecraft.server.v1_5_R2.MinecraftServer.a(MinecraftServer.java:242)
at net.minecraft.server.v1_5_R2.DedicatedServer.init(DedicatedServer.java:150)
at net.minecraft.server.v1_5_R2.MinecraftServer.run(MinecraftServer.java:381)
at net.minecraft.server.v1_5_R2.ThreadServerApplication.run(SourceFile:573)
Caused by: java.lang.ClassNotFoundException: org.joda.time.ReadableInstant
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader.java:80)
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:53)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 13 more
答案 0 :(得分:0)
你把Joda Time的jar文件放在与craftbukkit.jar相同的文件夹中吗? 我不确定这是否能解决这个问题。
答案 1 :(得分:0)
只需添加构建插件maven-shade-plugin,它将Joda Time插入到插件jar中,因此可以在运行时找到这些类。
进入 pom.xml :
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>jar-with-dependencies</shadedClassifierName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后使用name-with-dependencies.jar作为插件文件。