2015-02-03 1 views
2

Java 라이브러리의 정적 내부 클래스를 Clojure에 사용하려고합니다.Clojure 정적 내부 클래스 인스턴스화 문제 (interop 문제)

내부 클래스는 InMemoryLookupCache.Builder입니다.

나는 항상 ClassNotFoundException을 얻고 있습니다. 와 마찬가지로 :

(import 'org.deeplearning4j.models.word2vec.wordstore.inmemory.InMemoryLookupCache$Builder) 

나는 어떤 성공하지 Clojure의에서 그 자바 코드를 작성하는 것을 시도하고있다 : 나는 내가 바로를 사용하고 생각하는 경우에도 그 내부 클래스를 인스턴스화 할 수없는 오전 그러나

new InMemoryLookupCache.Builder().lr(2e-5).vectorLength(100).build(); 

액세스하려면 구문은 $입니다.

당신이 시도 할 경우 다음 프로젝트 사용 : 사용중인 클래스, 내가 빌더 내부 클래스를 볼 수 없습니다되어

[org.deeplearning4j/deeplearning4j-core "0.0.3.3"] 
[org.deeplearning4j/deeplearning4j-nlp "0.0.3.3"] 
+0

어느 부분 가져 오기 자체 또는 클래스의 사용을 실패? – SirBraneDamuj

+0

@SirBraneDamuj'import'가'ClassNotFoundException'으로 실패했습니다 (방금 시도했습니다) – Kyle

+0

@SirBraneDamuj 예 가져 왔습니다. 그렇지 않으면 나는'ns' import :'(: import org.deeplearning4j.models.word2vec.wordstore.inmemory InMemoryLookupCache $ Builder)'를 시도한 다음'InMemoryLookupCache $ Builder'처럼 사용하려고했지만 역시 실패합니다. – Neoasimov

답변

2

this하는 경우를?

편집 : 이것은 저에게 효과적입니다. 라이브러리 버전을 예제에서 사용하는 버전으로 변경했습니다. project.clj에서

: core.clj에서

(defproject clojure-scratch "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 
    :dependencies [[org.clojure/clojure "1.6.0"] 
       [org.deeplearning4j/deeplearning4j-core "0.0.3.2.7"] 
       [org.deeplearning4j/deeplearning4j-nlp "0.0.3.2.7"]]) 

:

(ns clojure-scratch.core 
    (:import (org.deeplearning4j.models.word2vec.wordstore.inmemory 
      InMemoryLookupCache 
      InMemoryLookupCache$Builder))) 

(println (new InMemoryLookupCache$Builder)) 
+0

맞습니다. 그러나 나는 뭔가를 놓치고 있어야합니다 ... 만약 내가 그 파일의 역사를 확인한다면 그것은 결코 존재하지 않을 것 같지만 그들의 예에서는 분명히 그 빌더를 사용하고 있습니다 : https://github.com/SkymindIO/ dl4j-examples/blob/master/src/main/java/org/deeplearning4j/word2vec/Word2VecExample.java – Neoasimov

+0

편집을 확인하십시오. – RedDeckWins

+0

나는 좀 더 분석을했다. 버전 '0.0.3.3'에서 주요 리팩토링 변경 사항이 있음이 밝혀졌습니다. 이전 버전'0.0.3.2.7'에는 적절한 코드가 있습니다. 혼란 스러웠던 점은 Java API와 예제가 제대로 업데이트되지 않았다는 점입니다. – Neoasimov