2017-01-03 11 views
1

ClojureでfxmlベースのJavaFXシーンをロードする必要があります。 ですが、リソース "view.fxml"をロードしようとするとnilが返されます。ここでclojure.java.io/resource returns nil

は私の現在のコードです:

(ns ui.ui_controller 
(:import (javafx.application Application) 
     (javafx.fxml FXMLLoader) 
     (javafx.scene Scene) 
     (javafx.stage Stage))) 

(gen-class 
:name ui.ui_controller 
:extends javafx.application.Application) 

(defn -main [& args] 
(Application/launch ui.ui_controller args)) 

(defn -start [this stage] 

(let [loc (clojure.java.io/resource "view.fxml") 
    root (FXMLLoader/load loc)] 

(.setScene stage (Scene. root)) 
(.setTitle stage "JavaFXML with Clojure Example") 
(.show stage))) 

とリソースフォルダには、ロードされるべきview.fxmlファイル、です。コール(のprintln(clojure.java.io/resource "view.fxml"))で、それがnilを返す

...

ここでうまくいかないものを任意のアイデア?

ありがとうございます!

+0

私はあなたの環境で何かが間違っている推測しています。 'resources'に1行のテキストファイルを入れてテスト用の新しいプロジェクトを作りましょう。あなたは 'slurp'でそれを読むことができるはずです。 –

+0

ありがとう!私は新しいプロジェクトを作りました。私は私のアプリケーションに新しいプロジェクトを作ります。 – GameYoker

+0

私はresource-paths [["lib/jfxrt.jar"]を私のproject.cljに追加しました。理由を知らないのですが...削除した後で動作します。 – GameYoker

答えて

1

は、ここでは一例

(ns tst.clj.core 
    (:use clj.core 
     clojure.test) 
    (:require 
    [clojure.java.io :as io] 
)) 

(def words (slurp (io/file (io/resource "count.txt")))) 
(println words) 


> ls -ldF resources/count.txt 
-rw-rw-r-- 1 alan alan 14 Jan 3 09:01 resources/count.txt 

> cat resources/count.txt 
one 
two 
three 

> lein test 

one 
two 
three