有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java很难让Joda有时间使用我的bukkit插件

我试图在bukkit插件中使用Joda Time,但是我遇到了ClassNotFoundException和NoClassDefFoundError

我正在使用eclipse,并将其添加到构建路径中,修改了jar清单中的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) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    只需添加到构建插件maven shade plugin,它将Joda时间插入插件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>
    

    然后将名称与依赖项一起使用。jar作为您的插件文件