java - Unable to find Clojure -
edit: there other discussions going on related question on the bukkit forums , on github.
so, know 1 or 2 people have attempted no luck.. think i'm there.
one problem: don't know java, little alien me. anyway..
so, made simple class in clojure, follows:
(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!"))
i use clojure's compile
function compile java class, follows..
(set! *compile-path* ".") (compile 'com.gdude2002.clojureplugin.mainclj)
i put in jar manually, under com/gdude2002/clojureplugin/mainclj.class (as putting plugin.yml in root).
so far good. method isn't making bukkit bitch code (specifically), guess thing. now, on problem.
when try launch server handmade jar, following output.
21:43:30 [severe] not load 'plugins\plugin.jar' in folder 'plugins' org.bukkit.plugin.invalidpluginexception: java.lang.noclassdeffounderror: clojure/lang/ifn
"so," think, "that seems simple enough - can't find clojure, right?" so, put clojure jar in sorts of places, same error. add meta-inf/manifest.mf jar, containing class-path: ../lib
. still nothing.
so, thinking being smart, pulled clojure folder out of clojure jar , shoved mine, putting folder in ../lib, , other places thought might help.
now, error..
21:51:33 [severe] not load 'plugins\plugin.jar' in folder 'plugins' org.bukkit.plugin.invalidpluginexception: java.lang.exceptionininitializererror ... caused by: java.io.filenotfoundexception: not locate clojure/core__init.class or clojure/core.clj on classpath: ...
the thing is, both of things exist, far can see..
edit: decided show decompiled class code here, in case helps anyone.
// intellij api decompiler stub source generated class file // implementation of methods 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 */ } }
edit: mentioned in comments should post project.clj file. thing is, don't have one! i'm running compile.clj on mainclj.clj directly, , creating jarfile hand.
at point, i'm entirely stumped. have ideas on this?
i solved problem configuring class loader of calling code described in post.
my situation might bit different did calling java code. in other words, invoked code in commandexecutor (java) before invoking method class created using gen-class (clojure).
Comments
Post a Comment