2013-04-14 50 views
4

我有一个非常恼人的问题,那就是当在eclipse中从我的源代码中导出一个jar文件时,我将在堆栈跟踪中找不到有关发生错误的源和行号的信息。我已经在ecplise中检查了项目的编译器设置,并设置了部分类文件生成中的所有选项。 我正在开发由服务器软件bukkit执行的Minecraft插件。我的源代码是de.celestialcraft.agentestate包。在异常的次数我得到这样一个堆栈跟踪:Stacktrace中的未知源代码Eclipse Eclipse

23:43:57 [INFO] [email protected] 
23:43:57 [SEVERE] Could not pass event BlockDamageEvent to AgentEstate v2.1alpha 

org.bukkit.event.EventException 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja 
va:363) 
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav 
a:62) 
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j 
ava:477) 
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j 
ava:462) 
    at de.celestialcraft.AgentEstate.AgentEstateBlockListener.onBlockBreak(U 
nknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja 
va:361) 
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav 
a:62) 
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j 
ava:477) 
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j 
ava:462) 
    at ir.b(ItemInWorldManager.java:393) 
    at ir.a(ItemInWorldManager.java:200) 
    at iv.a(NetServerHandler.java:782) 
    at ei.a(Packet14BlockDig.java:67) 
    at cg.b(TcpConnection.java:467) 
    at iv.d(NetServerHandler.java:220) 
    at iw.b(NetworkListenThread.java:57) 
    at ht.b(DedicatedServerListenThread.java:34) 
    at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:981) 
    at ho.r(DedicatedServer.java:309) 
    at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:857) 
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:744) 
    at fy.run(ThreadMinecraftServer.java:16) 
Caused by: java.lang.NullPointerException 
    at com.sk89q.worldedit.schematic.MCEditSchematicFormat.save(Unknown Sour 
ce) 
    at de.celestialcraft.AgentEstate.Estate.saveState(Unknown Source) 
    at de.celestialcraft.AgentEstate.Estate.create(Unknown Source) 
    at de.celestialcraft.AgentEstate.Estate.create(Unknown Source) 
    at de.celestialcraft.AgentEstate.AgentEstateBlockListener.onBlockDamage(
Unknown Source) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja 
va:361) 
    ... 25 more 

我已经在构建路径设置为lib中的项目设置JDK路径。我希望你能帮助我解决这个问题。 谢谢。

+0

你是如何输出罐子的? – DiogoSantana

+0

只需使用Eclipse的inbuild功能(右键单击项目名称>>导出) – Nerade

+0

操作系统和Java版本?你能够调试该代码吗? – DiogoSantana

回答

0

您的项目应该标记为启用项目特定设置,并且在Java编译器 - >类文件生成时,选项添加行号...应该是未标记的。

+0

我试过这个,但同样的问题。 – Nerade

0

由于Bukkit是一个API,所以当你编写一个bukkit插件时,你将以这样一种方式创建代码块,只有Bukkit知道如何处理所述代码。为了找出导致错误的原因,您需要查看StackTrace中的“at”行并在Github上的Bukkit源文件中找到它。例如,在这个堆栈跟踪你有这样的顶部:

org.bukkit.event.EventException 
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363) 

你可以看到有一个Bukkit EventException在行363所引起的JavaPluginLoader错误为了找出在那里究竟出了什么,您应该访问https://github.com/Bukkit/Bukkit/releases并下载适用于您编码的MC版本的相应源版本。在这个zip文件中,你可以在src/main/java /找到源文件夹,然后按照这个堆栈跟踪(org/bukkit/plugin/java/JavaPluginLoader)的第2行的路径,并在该文件的第363行中看到发生了错误。

因为我不知道你编码的是什么版本的Bukkit,所以我不能帮你从这里过去,除非说那个文件中的哪一个方法有第363行作为它的一部分是与你的问题。如果你知道这个方法做了什么,Bukkit试图用你的插件代码来做并且失败了。