2011-01-21 12 views
5

क्या कोई जानता है कि कैसे (या अगर) आप एसीबीएल का उपयोग लिस्पी कोड को .class फ़ाइलों में संकलित करने और मुख्य विधि बनाने के लिए कर सकते हैं ताकि पूरी चीज़ को .jar फ़ाइल में पैक किया जा सके और चलाया जा सके?एबीसीएल संकलन और प्राइमेटिव

इसके अलावा, क्या कोई जानता है कि एबीसीएल कोड से प्राइमेटिव जावा प्रकारों को कैसे पहुंचाया जाए?

उत्तर

0

यदि कोई समाधान के आसपास अधिक पैकेजिंग की तलाश में है, तो एबीसीएल में यूआरआई से एएसडीएफ परिभाषाओं को लोड करने की क्षमता है कि क्लास लोडर समझता है। एएसडीएफ-इंस्टाल इस तंत्र द्वारा लोड किया जाता है (चींटी निर्माण लक्ष्य 'abcl.contrib' का उपयोग करें), लेकिन एक साधारण उदाहरण के रूप में, निम्न कोड गतिशील रूप से a trivial test of ASDF loading via URI लोड करेगा।

CL-USER> (pushnew #p"jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/" asdf:*central-registry*) 
(#P"jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/" #P"jar:file:/Users/evenson/work/abcl/dist/abcl-contrib.jar!/asdf-install/" (MERGE-PATHNAMES ".asdf-install-dir/systems/" (USER-HOMEDIR-PATHNAME)) (MERGE-PATHNAMES "work/lsw/" (USER-HOMEDIR-PATHNAME))) 
CL-USER> (asdf:load-system :test) 
; Loading system definition from jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/test.asd into #<PACKAGE "ASDF0"> 
; Registering #<SYSTEM :TEST> as TEST 
; Compiling jar:http://abcl-dynamic-install.googlecode.com/files/asdf-uri-test.jar!/asdf-uri-test/test.lisp ... 
; (DEFUN TEST ...) 
; Wrote /Users/evenson/.cache/common-lisp/abcl-0.25.0-dev-fasl37-macosx-java/files/asdf-uri-test.jar/asdf-uri-test/ASDF-TMP-test.abcl (0.163 seconds) 
T 
CL-USER> (test) 
"The test function loaded!" 

आप पैकेजिंग के लिए कि जार अध्ययन कर सकते हैं, लेकिन मूल रूप से यह सिर्फ एक जार के रूप में यह पैकेजिंग एक ASDF परिभाषा बनाने शामिल है बस फिर,। ध्यान दें कि जेएआर में केवल लिस्प स्रोत है जो स्वचालित रूप से एएसडीएफ 2 कार्यान्वयन के माध्यम से स्थानीय निर्देशिका में OUTPUT-TRANSLATION-LOCATION तंत्र के माध्यम से संकलित किया जाता है। JAR में किसी भी जावा क्लास फ़ाइलों को वर्तमान में अनदेखा किया जाता है। हालांकि जावा क्लास फाइलें "प्लेटफॉर्म स्वतंत्र" होनी चाहिए, वहां पर्याप्त जेवीएम कार्यान्वयन हैं (क्यूवी जावा 5 वी जावा 6) कि प्रति एबीसीएल कार्यान्वयन के लिए लिस्प को संकलित करना समझ में आता है। निश्चित रूप से यूबीआई के माध्यम से एबीसीएल एफएएसएल लोड करने की क्षमता भी है, इसलिए मौजूदा एएसडीएफ कार्यान्वयन को शायद संशोधित किया जा सकता है यदि किसी के पास प्रारंभिक एएसडीएफ लोड पर संकलन करने के लिए कोई उपयोग केस नहीं है।

संबंधित मुद्दे