clojure java_java – 无法找到Clojure

编辑:在

the Bukkit forums和

on Github上还有一些与此问题相关的讨论.

所以,我知道有一两个人没有运气就试过这个……但我想我差不多了.

一个问题:我不懂Java,所以这对我来说有点陌生.无论如何..

所以,我在Clojure中创建了一个简单的类,如下所示:

(ns com.gdude2002.ClojurePlugin.mainclj

(:gen-class

:name com.gdude2002.ClojurePlugin.mainclj

:extends org.bukkit.plugin.java.JavaPlugin)

(:import org.bukkit.plugin.java.JavaPlugin))

(defn -onEnable [this] (java.util.logging.Logger/getLogger "Loaded clojure plugin!"))

(defn -onDisable [this] (java.util.logging.Logger/getLogger "Unloaded clojure plugin!"))

我使用clojure的编译函数将其编译为Java类,如下所示.

(set! *compile-path* ".")

(compile 'com.gdude2002.ClojurePlugin.mainclj)

然后我手动将它放在jar中,在com / gdude2002 / ClojurePlugin / mainclj.class下(以及将plugin.yml放在root中).

到现在为止还挺好.这个方法不是关于我的代码(特别是)的bukkit婊子,我认为这是一件好事.

现在,关于这个问题.

当我尝试使用这个手工制作的jar启动服务器时,我得到以下输出.

21:43:30 [SEVERE] Could not load 'plugins\plugin.jar' in folder 'plugins'

org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: clojure/lang/IFn

“所以,”我想,“这看起来很简单 – 它找不到Clojure,对吧?”所以,我把clojure jar放在各种各样的地方,同样的错误.我还将META-INF / MANIFEST.MF添加到jar中,包含Class-Path:../ lib.依然没有.

因此,我认为自己很聪明,我将clojure文件夹从Clojure jar中取出并将其推入我的文件夹中,同时将文件夹放在../lib中,以及我认为可能有用的其他地方.

现在,我收到此错误..

21:51:33 [SEVERE] Could not load 'plugins\plugin.jar' in folder 'plugins'

org.bukkit.plugin.InvalidPluginException: java.lang.ExceptionInInitializerError

...

Caused by: java.io.FileNotFoundException: Could not locate clojure/core__init.class or clojure/core.clj on classpath:

...

问题是,就我所见,这两件事都存在.

编辑:决定在这里显示反编译的类代码,以防有人帮助.

// IntelliJ API Decompiler stub source generated from a class file

// Implementation of methods is not available

package com.gdude2002.ClojurePlugin;

public class mainclj extends org.bukkit.plugin.java.JavaPlugin {

private static final clojure.lang.Var main__var;

private static final clojure.lang.Var onEnable__var;

private static final clojure.lang.Var getResource__var;

private static final clojure.lang.Var onLoad__var;

private static final clojure.lang.Var getLogger__var;

private static final clojure.lang.Var saveDefaultConfig__var;

private static final clojure.lang.Var getDescription__var;

private static final clojure.lang.Var removeDDL__var;

private static final clojure.lang.Var onDisable__var;

private static final clojure.lang.Var isInitialized__var;

private static final clojure.lang.Var saveResource__var;

private static final clojure.lang.Var onCommand__var;

private static final clojure.lang.Var getDefaultWorldGenerator__var;

private static final clojure.lang.Var toString__var;

private static final clojure.lang.Var getDataFolder__var;

private static final clojure.lang.Var installDDL__var;

private static final clojure.lang.Var getDatabase__var;

private static final clojure.lang.Var getFile__var;

private static final clojure.lang.Var getClassLoader__var;

private static final clojure.lang.Var getCommand__var;

private static final clojure.lang.Var getDatabaseClasses__var;

private static final clojure.lang.Var getConfig__var;

private static final clojure.lang.Var reloadConfig__var;

private static final clojure.lang.Var clone__var;

private static final clojure.lang.Var setEnabled__var;

private static final clojure.lang.Var saveConfig__var;

public mainclj() { /* compiled code */ }

public java.io.File getDataFolder() { /* compiled code */ }

public boolean onCommand(org.bukkit.command.CommandSender p0, org.bukkit.command.Command p1, java.lang.String p2, java.lang.String[] p3) { /* compiled code */ }

public void reloadConfig() { /* compiled code */ }

public org.bukkit.configuration.file.FileConfiguration getConfig() { /* compiled code */ }

public java.io.File getFile() { /* compiled code */ }

public void saveConfig() { /* compiled code */ }

public org.bukkit.command.PluginCommand getCommand(java.lang.String p0) { /* compiled code */ }

public void onEnable() { /* compiled code */ }

public java.util.logging.Logger getLogger() { /* compiled code */ }

public void onLoad() { /* compiled code */ }

public java.lang.ClassLoader getClassLoader() { /* compiled code */ }

public void saveDefaultConfig() { /* compiled code */ }

public org.bukkit.plugin.PluginDescriptionFile getDescription() { /* compiled code */ }

public com.avaje.ebean.EbeanServer getDatabase() { /* compiled code */ }

public void removeDDL() { /* compiled code */ }

public void onDisable() { /* compiled code */ }

public boolean isInitialized() { /* compiled code */ }

public org.bukkit.generator.ChunkGenerator getDefaultWorldGenerator(java.lang.String p0, java.lang.String p1) { /* compiled code */ }

public void installDDL() { /* compiled code */ }

public void saveResource(java.lang.String p0, boolean p1) { /* compiled code */ }

public java.util.List getDatabaseClasses() { /* compiled code */ }

public java.lang.String toString() { /* compiled code */ }

public java.lang.Object clone() { /* compiled code */ }

public void setEnabled(boolean p0) { /* compiled code */ }

public java.io.InputStream getResource(java.lang.String p0) { /* compiled code */ }

public static void main(java.lang.String[] p0) { /* compiled code */ }

}

编辑:评论中提到我应该发布我的project.clj文件.事情是,我没有!我直接在mainclj.clj上运行compile.clj,并手动创建一个jar文件.

在这一点上,我完全被难倒了.有没有人对此有任何想法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值