uberjar를 사용하여 문제를 평가하다
4988 단어 leiningen
문제는 다음과 같습니다.
내 프로젝트에서, 내가 '렌 런' 을 사용할 때, 나는 실행할 때 코드를 평가할 수 있고, 모든 것이 정상이다.uberjar을 사용하면 해석되지 않은 기호를 얻을 수 있습니다.
오류 뒤에 있는 생각은 핵심 명칭 공간이 과거에 사용했던 d명칭 공간의 기호를 더 이상 보지 않는 것 같다는 것이다. 사용하고 보았던 것은'leinrun'이다.
복제 방법:
항목은 다음과 같습니다.https://www.dropbox.com/s/iwgppoxzjto502b/Archmaster.rar
"lein run"을 사용하여 게임을 시작합니다.계속하려면 클릭하십시오.윈도우즈 '열 코드 다시 불러오기' 에서 'wip' 을 두 번 클릭하십시오.호를 클릭합니다.버퍼링이나 인쇄 이상이 없습니다.그것은 효과가 있었다.
"lein uberjar"를 사용하여 uberjar를 만듭니다.자바로 간단하게 시작합니다.같은 방법 (continue->wip.arc) 을 시도하면 '해석되지 않은 기호' 가 이상합니다.
나는 작은 테스트 항목에서 그것을 재현할 수 없다. 핵심 이름 공간에서 다른 이름 공간의 기호를 볼 수 있다.나의 거대한 계획에는 틀림없이 무언가가 있을 것이다. 아마도 clojure의 한 면일 것이다.아마도 내 것일 것이다. 그러나 나는 지금 이것에 대해 의심을 표시하고 있다.
나는 너의 도움에 매우 감사할 것이다.이것은 6개월의 여가 근무 시간이다.코드가 실행될 때 킬러급 기능이 여기에 의존하는 것을 평가하는 것이 절실하다.
만약 네가 이것들을 상세하게 이해할 시간이 없다면, 나는 약간의 이론을 발굴하는 것이 도움이 될 것이다.감사합니다.
고맙습니다.
묘사
Windows 개발 시스템을 사용할 수 없습니다.Linux토론 #1
에서 다음 장애가 발생했습니다.Exception in thread "main" java.io.IOException: File name too long, compiling:(Archmaster/core.clj:39:3)
나는 거기에 무슨 문제가 생겼는지 모르겠다.보기
lein uberjar
, org의 로컬 코드를 매우 확인합니다.eclipse/swt-*는 uberjar에 폐를 끼칠 수 있습니다.나는 어떻게 처리해야 할지 모르겠다.이 가능하다, ~할 수 있다,...https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L41도움이 될까요?여기 있는 대화를 더 쉽게 하기 위해서 나는 너의 소프트웨어 패키지에서 찾았다
project.clj
:(let [properties (select-keys (into {} (System/getProperties))
["os.arch" "os.name"])
platform (re-find #"[^\s]+" (apply format "%s" (vals properties)))
swt (case platform
"Windows" '[org.eclipse/swt-win32-win32-x86 "3.5.2"]
"Linux" '[org.eclipse/swt-gtk-linux-x86 "3.5.2"]
)]
(defproject Archmaster "0.1.0-SNAPSHOT"
:description "Archmaster description"
:url "http://townportal.net"
:license {:name "yop"
:url "http://townportal.net"}
:dependencies [ [org.clojure/clojure "1.5.1"]
~swt
[org.clojure/java.jdbc "0.0.6"]
[org.xerial/sqlite-jdbc "3.7.2"]
[com.googlecode.soundlibs/jlayer "1.0.1-1"]
[clj-http "0.6.4"]
[cheshire "5.0.2"]]
:uberjar-name "Archmaster.jar"
:plugins [[lein-localrepo "0.5.2"]
[lein-light "0.0.4"]] ;https://github.com/kumarshantanu/lein-localrepo
:repl-options {:timeout 1200000}
:main Archmaster.core))
project.clj
봐줘서 고마워요.On Linux, lein uberjar fails with: ....
응, 작은 문제로 들린다.이 오류는 실제로 절대 파일 경로를 사용하여 로드된 파일과 관련이 있습니다.아마도 너는 이미 이 항목을 너의 문서 차원 구조에 깊이 두었을 것이다.토론 #2
압축 파일의 대다수 파일은 추출할 수 없지만, 만약 이 컴퓨터의 의존 항목을 사용하는 프로젝트라면, uberjar에서 일하지 않고와 함께 일하는 것은 이상할 것이 없습니다.Leiningen은 JAR에서 이 컴퓨터 구성 요소를 추출하여
토론 #셋
lein run
에 놓을 수 있습니다. 따라서 Leiningen 외부에서 실행할 때 이 라이브러리 경로의 추출과 설정을 스스로 처리할 수 있습니다.java.library.path
봐줘서 고마워요.
나는 새로운 파일을 만들었다.https://www.dropbox.com/s/srjg2akt0jcuo6u/Archmaster.tar
이 프로그램은 uberjar에서 잘 작동하지만, 실행할 때 평가하는 동안 일부 기호를 해석할 수 없습니다.이 오류는 swt표에 연결된 기호와 관련이 있습니다. 이것이 바로 당신이 말한 것이 내가 직면한 문제와 관련이 있다고 생각하지만, 나는 확실하지 않습니다.
너의 말을 읽으면, 나는 이 프로그램들이 근본적으로 실행되어서는 안 된다고 생각한다, 응?운행 중이니까.
어쨌든 나는 새로운 서류가 될 수 있기를 바란다...
감사합니다.토론 #4
나는 잠시 후에 새로운 압축 파일을 볼 수 있지만, 분명히 하기 위해서, 내 말은 uberjar를 실행할 때, uberjar에는 반드시 본 컴퓨터 코드 추출 기능 (범음과 반영은 이 점을 할 수 있다) 을 포함해야 한다는 것이지, uberjar의 본 컴퓨터 코드를 사용할 수 없다는 것이 아니다.따라서, 두 개의 본 컴퓨터 코드 추출 절차가 서로 다른 것을 볼 수 있습니다.토론 #5
불행하게도, 나는 네가 말한 본 컴퓨터 코드 추출에 대해 아무것도 모른다.(토론 #6
방금 Leinotf 플러그인(즉시 컴파일)을 시도하여 이 문제를 해결했습니다.물론, 현재 프로그램의 불러오는 시간이 훨씬 길다는 것은 받아들일 수 없다.토론 #7
코어 ns의 모든 컨텐츠를 재저장하여 복구:지지해 주셔서 감사합니다.(let [core (ns-map 'Archmaster.core)] (doseq [k (concat (ns-map 'Archmaster.utils) (ns-map 'Archmaster.ui) (ns-map 'Archmaster.type) (ns-map 'Archmaster.character) (ns-map 'Archmaster.init1) (ns-map 'Archmaster.init2) (ns-map 'Archmaster.ledelris.ledelris) (ns-map 'Archmaster.map))] (when (nil? (get core (first k))) ; false when lein run, true when lein uberjar-ed (try (println k) (intern 'Archmaster.core (first k) @(second k)) (catch Exception e (pst e 36))))))
토론 #8
이 작업은 종료되지만 복제 사례에 문제가 있는 경우 다시 열 수 있습니다.
Reference
이 문제에 관하여(uberjar를 사용하여 문제를 평가하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/technomancy/leiningen/issues/1384텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)