无法让Joda Time使用我的bukkit插件

时间:2013-06-08 03:16:19

标签: java jodatime bukkit

我正在尝试将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

2 个答案:

答案 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作为插件文件。