2010-05-26 30 views
10

Tôi đang cố gắng thiết lập một dự án clojure đơn giản và tôi không chắc chắn cách tải các tệp giữa dự án. Tôi chắc chắn rằng câu trả lời nằm trong tài liệu, nhưng tôi không thể tìm thấy câu trả lời đơn giản ở bất kỳ đâu và tôi không chắc chắn nên tìm ở đâu.Các tệp tải Clojure

Về cơ bản, thư mục của tôi trông như thế này:

Clojure/ 
    clojure/ 
     clojure.jar 
     other clojure files 
    clojure-contrib/ 
     clojure-contrib.jar 
     other contrib files 
    project/ 
     main.clj 
     utils.clj 

Và tôi muốn main.clj là một cái gì đó như thế này:

(ns project.main 
    (:require project.utils)) 
(greet) 

và utils.clj là một cái gì đó như thế này:

(ns project.utils) 
(defn greet [] (println "Hello, World!")) 

Nhưng điều đó không thành công với:

Exception in thread "main" java.io.FileNotFoundException: Could not locate project/utils__init.class or project/utils.clj on classpath: (main.clj:1) 

Khi tôi cố gắng chạy. Đường dẫn lớp của tôi bao gồm thư mục Clojure/ trên cùng và cả hai lọ. Tôi cũng đã cố gắng đặt thư mục project/ trong classpath là tốt, không có may mắn.

Làm cách nào để bạn thiết lập một dự án clojure đơn giản?

Trả lời

9

Bạn không đề cập đến môi trường của bạn (ví dụ: Emacs/SLIME/Swank, vim/Vimclojure), vì vậy tôi sẽ giả sử bạn đang cố gắng gọi nó từ dòng lệnh.

Bạn cần có thư mục dự án Clojure/ của bạn trong classpath:

java -cp path/to/clojure.jar:path/to/clojure-contrib.jar:path/to/Clojure ... 

Hãy chắc chắn để kiểm tra xem đường dẫn là chính xác tương đối so với thư mục làm việc hiện hành. Nó cần trỏ đến gốc của không gian tên của bạn (tức là nếu chạy trong Clojure/, đường dẫn là .). Trong thực tế, bố cục dự án của bạn hoạt động trên máy của tôi (tm), ngoại trừ việc tôi có use thay vì require (nhưng bạn cũng nên có một lỗi khác nếu bạn đã đến lúc Clojure có thể tìm thấy tất cả các tệp của bạn).

+0

Cảm ơn. Nó chỉ ra vấn đề của tôi là vì tôi đang chạy từ bên trong 'project /', vì vậy tôi cần thêm '..' vào classpath. Nó đang làm việc bây giờ. Vim \ VimClojure, nhân tiện. :) – So8res

5

This answer Tôi đã đăng lên một câu hỏi khác hy vọng sẽ cung cấp cho bạn ý tưởng về cách tên tệp của bạn nên liên quan đến tên không gian tên để mọi thứ hoạt động. Tuy nhiên, vì câu hỏi của bạn là "làm thế nào để thiết lập một dự án Clojure đơn giản", sau đây là một khởi đầu tốt hơn:

  1. Tới GitHub và lấy Leiningen.

  2. Làm theo hướng dẫn trong README. Bạn sẽ kết thúc một số việc như

    $ lein new my-project 
    $ cd my-project 
    # ... edit project.clj ... 
    $ lein deps 
    
  3. Hack đi! Bạn sẽ cần phải đặt các tệp của mình vào đúng vị trí. Điều đó có nghĩa là đặt các tệp nguồn của bạn trong cây thư mục bắt nguồn từ my-project/src, với không gian tên chính của bạn rất có thể nằm ở số my-project/src/my_project/core.clj. Nhưng thực sự, tôi đã giải thích tất cả các chi tiết trong the answer linked to above, vì vậy hãy đọc nó (và để lại một bình luận nếu tôi bỏ lỡ một cái gì đó).:-)

Leiningen sẽ chăm sóc bố trí dự án cơ bản và thiết lập classpath cho một REPL/phô trương/nailgun cho bạn (nếu bạn chưa đi qua sau hai, bạn sẽ sớm - - nhưng đó là một chủ đề riêng biệt, phần mà tôi đã đề cập đến ở một mức độ nhất định, ví dụ: in this SO answer), vì vậy hy vọng bạn sẽ không bao giờ cần phải xử lý các khoản vô nghĩa java -cp ... bằng tay. (Câu trả lời liên quan đến swank tôi liên kết trong phần nhận xét cuối cùng của cha mẹ có chi tiết về cách thiết lập swank với classpath chính xác từ bên trong Emacs.)

+0

Có lẽ nó sẽ hữu ích cho tác giả của câu hỏi: http://alexott.net/en/clojure/ClojureLein.html - Giới thiệu về làm việc với Leiningen –

Các vấn đề liên quan