2016-12-15 3 views
0

Ich bekomme ClassNotFoundException, wenn ich meine benutzerdefinierte Java-Klasse in meinem Clojure-Projekt importieren.lein benutzerdefinierte Java-Klasse nicht gefunden Ausnahme

;project.clj 
(defproject subclass "0.1.0-SNAPSHOT" 
    :dependencies [[org.clojure/clojure "1.8.0"]] 
    :java-source-paths ["src/java"] 
    :main subclass.core 
    :aot [subclass.core] 
    :target-path "target/%s" 
    :profiles {:uberjar {:aot :all}}) 

;src/subclass/core.clj 
(ns subclass.core 
    (:gen-class 
    :extends BaseClass 
    :exposes-methods {greet pgreet}) 
    (:import BaseClass)) ;This is being qualified as java.lang.BaseClass 

(defn -main [& args]) 

//src/java/BaseClass.java 
public class BaseClass { 
    public String greet() { 
     return "Hello from BaseClass"; 
    } 
} 

Wenn ich laufen lein repl ich die folgende Störung erhalte:

Compiling subclass.core 
java.lang.ClassNotFoundException: java.lang.BaseClass, compiling:(subclass/core.clj:1:1) 
Exception in thread "main" java.lang.ClassNotFoundException: java.lang.BaseClass, compiling:(subclas 
s/core.clj:1:1) 
     at clojure.lang.Compiler.analyzeSeq(Compiler.java:6875) 
     at clojure.lang.Compiler.analyze(Compiler.java:6669) 
     at clojure.lang.Compiler.analyze(Compiler.java:6625) 
     ... snip ... 
     at clojure.lang.AFn.applyToHelper(AFn.java:156) 
     at clojure.lang.Var.applyTo(Var.java:700) 
     at clojure.main.main(main.java:37) 
Caused by: java.lang.ClassNotFoundException: java.lang.Baseclass 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69) 
     ... snip ... 
     ... 54 more 
Compilation failed: Subprocess failed 

Die BaseClasss wird immer als java.lang.BaseClass qualifiziert, die fehlschlägt. Wie wird sich BaseClass von src/java beziehen? Vielen Dank.

+0

'Baseclass' ist nicht dasselbe wie' BaseClass'. –

+0

Sorry, aktualisiert den Beitrag. – boring

+0

Alan Thompson: Danke, das funktioniert. – boring

Antwort

1

Versuchen Sie BaseClass in einem Paket zu setzen. Java & Clojure mag keine "nackten" Klassen.

Verwandte Themen