2016-10-28 10 views
0

я назвалClojure java.lang.NoClassDefFoundError при вызове CLJ времени/последний день-оф-месяц

(clj-time.core/last-day-of-the-month 1999 2) 

и

(clj-time.core/number-of-days-in-the-month 1999 2) 

и бросает

java.lang.NoClassDefFoundError org/joda/time/DateTime$Property org.joda.time.DateTime.dayOfMonth (DateTime.java:1971) 

Документы говорят:

(defn last-day-of-the-month 
    ([^long year ^long month] 
     (last-day-of-the-month- (date-time year month))) 
    ([dt] 
     (last-day-of-the-month- dt))) 

(defn number-of-days-in-the-month 
    (^long [^DateTime dt] 
     (day (last-day-of-the-month- dt))) 
    (^long [^long year ^long month] 
     (day (last-day-of-the-month- (date-time year month))))) 

Что я делаю не так?

Спасибо!

Ниже мои настройки проекта и зависимостей:


(defproject xxx "0.1.2-SNAPSHOT" 
:description "" 
:dependencies [[org.clojure/clojure "1.8.0"] 

... 
      [clj-time "0.11.0"]   

...) 

и я попробовал это в проекте РЕПЛ:

clj-time=> clj-time.core/last-day-of-the-month 
#object[clj_time.core$last_day_of_the_month 0x6a86b560 "[email protected]"] 

Приведенные выше результаты получаете от сервера Repl к которому я подключаюсь через канализацию по ssh.

Когда я бегу lein repl в локальной папке проекта, я могу получить правильный результат:

xxx.core=> (clj-time.core/last-day-of-the-month 2016 2) 
#object[org.joda.time.DateTime 0x22a0534e "2016-02-29T00:00:00.000Z"] 
xxx.core=> (clj-time.core/number-of-days-in-the-month 2016 2) 
29 

Я новичок в Clojure. Полезна ли эта информация?


После перезагрузки проблемы проблема решена сейчас.

ответ

1

Отлично подходит для меня.

project.clj:

(defproject clj "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.9.0-alpha13"] 
    [clj-time "0.12.0"] 
    ] 
    :java-source-paths ["/home/alan/xpr/src"] 
    :main ^:skip-aot clj.core 
    :target-path "target/%s" 
    :profiles {:dev  {:dependencies [[org.clojure/test.check "0.9.0"]] } 
      :uberjar {:aot :all}} 
) 

Основная программа:

(ns clj.core 
    (:require 
    [clj-time.core :as tm] 
)) 

(println :day (tm/last-day-of-the-month 1999 2)) 

(println :days (tm/number-of-days-in-the-month 1999 2)) 

(defn -main [& args]) 

Результат:

~/clj > lein run  
:day #object[org.joda.time.DateTime 0x61884cb1 1999-02-28T00:00:00.000Z] 
:days 28 
+0

Это относится к CLJ времени версии? Я не могу отредактировать настройки проекта, потому что я всего лишь новый посетитель, и теперь в нашей группе используется множество проектов. – cmal

+0

Он по-прежнему отлично работает, если я меняю версию на «0.11.0». Возможно, вы должны создать новый проект для тестирования, пока не получите его работу. –

+0

Благодарим вас за ответ. Но моя ответственность заключается в ssh на удаленный сервер и там есть разработка. У меня нет полномочий для создания нового проекта или даже перезапуска процесса. Я новичок в развитии стиля lisp и repl. Возможно ли, что процесс repl может быть заражен действиями других людей до моего, так что я могу вызвать функцию, которая может быть не оригинальной, поэтому я не могу полагаться на вывод функции, что я ожидаю в совместная среда разработки repl? Благодарю. – cmal