"لين جرة" و "لين أوبرجار" لا يضعون الفئة الرئيسية بشكل صحيح
سؤال
ركضت lein uberjar
في مشروعي وإنشاء ملفات جرة المقابلة. عندما أدير الجرة أ ClassNotFoundException: explodingdots.core
هذا خطئ. لقد حددت explodingdot.core
كصفتي الرئيسية. لقد استخرجت ملف الجرة ولم يكن هناك بالفعل لا core.class
في الدليل المقابل. ماذا نسيت؟
لدي الرمز التالي في src/explodingdots/core.clj
(ns explodingdots.core (:import (java.awt Color Dimension Graphics2D AlphaComposite RenderingHints) (java.awt.event ActionListener MouseAdapter WindowAdapter) (javax.swing Timer JPanel JFrame)) (:gen-class)) [ ... ] (defn -init[] exploding-dots) (defn -main[_] (let [ed (new explodingdots.core)] (.init ed)))
محتوى بلدي project.clj
هو:
(defproject explodingdots "0.1" :dependencies [[org.clojure/clojure "1.2.0"] [org.clojure/clojure-contrib "1.2.0"]] :main explodingdots.core)
ملحوظة: أنا أستخدم Lininingen 1.3.1
المحلول
حسنًا ، لقد حلت مشكلتي الأصلية. إنه لأمر محرج أن أعترف بذلك ، لكنني أعتقد أنني يجب أن أفعل ذلك من أجل اكتمال هذا الموضوع. لقد اختلطت مع مساراتي. لدي نفس الملف ضمن مشروع NetBeans وفي مشروع Lininingen. وكنت أقوم بتحرير ملف NetBeans. آسف.
ولكن بعد ذلك واجهت مشكلة أخرى. تم العثور على الطريقة الرئيسية لكنني أحصل على
java.lang.IllegalArgumentException: Wrong number of args (0) passed to: core$-main
حاولت تغيير طريقتي الرئيسية من(defn -main [_] ...)
إلى (defn -main [& args] ...)
كما اقترح آرثر ولكن هذا لم ينجح. لحل هذا كتبت فقط (defn -main[]...)
مع عدم وجود args.
كانت المشكلة التالية هي تلك الدعوة (init)
من (main)
أدى إلى خطأ. لقد عملت حول ذلك من خلال عدم الاتصال (init)
على الإطلاق ما عدا الاتصال (exploding-dots)
مباشرة من (main)
.
لجعل كل شيء يعمل src/explodingdots/core.clj
يشبه
(ns explodingdots.core (:import (java.awt Color Dimension Graphics2D AlphaComposite RenderingHints) (java.awt.event ActionListener MouseAdapter WindowAdapter) (javax.swing Timer JPanel JFrame)) (:gen-class)) [ ... ] (defn -main[] (exploding-dots))
من خلال النظر إلى الحل الذي يجب أن أفكر فيه ، لماذا لم أكتب ذلك إلى الأمام. إنها الطريقة الأكثر بساطة والأكثر مستقيمًا إلى الأمام. ربما أحتاج إلى إجازة ؛).
نصائح أخرى
اضطررت إلى إضافة مكون ثالث إلى مساحة اسمي الرئيسية ونقل كل شيء إلى دليل COM تحت SRC.
com.explodingdots.core
أعلنت أيضًا أن تأخذ ناقل Arg ، لست متأكدًا مما إذا كان ذلك يجعل الاختلاف:
(declare main)
(defn -main [& args]