1

我正在尝试将 Joda-Time 与我的 bukkit 插件一起使用,但是我遇到了 ClassNotFoundException 和 NoClassDefFoundError。

我正在使用 eclipse 并将其添加到我的构建路径中,并在 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
4

2 回答 2

0

你把Joda Time的jar文件和craftbukkit.jar放在同一个文件夹里了吗?我不确定这是否能解决问题。

于 2013-07-07T19:59:33.947 回答
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 作为插件文件。

于 2015-12-16T17:18:05.310 回答