【问题标题】:Having trouble getting Joda Time to work with my bukkit plugin无法让 Joda Time 使用我的 bukkit 插件
【发布时间】:2015-12-17 01:18:05
【问题描述】:

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

【问题讨论】:

    标签: java jodatime bukkit


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      只需添加构建插件 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 作为您的插件文件。

      【讨论】:

        猜你喜欢
        • 2011-04-11
        • 2016-12-26
        • 1970-01-01
        • 2021-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-25
        • 1970-01-01
        相关资源
        最近更新 更多