lein clean 윈도우즈에 존재하지 않는 자원 경로에서 실패
5036 단어 leiningen
묘사
레닌 뿌리 v2.4.3과 v2.lein clean
자원 경로(예: project.clj
에 존재하지 않는 파일 경로를 지정하고 파일 시스템에 "lib"폴더가 없으면 Windows의 5.0 fail on:resource-paths ["lib/*"]
명령이 실패합니다.실패한 항목이 작업 항목의 서명에 서명되었을 때, 붕괴는 더욱 심각할 것이다. 리인은 어떤 것도 알려주지 않을 뿐만 아니라, 의존 항목을 묵묵히 다시 컴파일할 수 없기 때문에 작업 항목에 의외의 행위가 발생할 수 있다.
스택 추적 발생
lein clean
:java.io.IOException: Invalid argument
at java.io.WinNTFileSystem.canonicalize0 (WinNTFileSystem.java:-2)
java.io.WinNTFileSystem.canonicalize (WinNTFileSystem.java:428)
java.io.File.getCanonicalPath (File.java:618)
sun.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke (Method.java:497)
clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:93)
clojure.lang.Reflector.invokeNoArgInstanceMember (Reflector.java:313)
leiningen.clean$protected_paths$fn__10733.invoke (clean.clj:46)
clojure.core$map$fn__4245.invoke (core.clj:2559)
clojure.lang.LazySeq.sval (LazySeq.java:40)
clojure.lang.LazySeq.seq (LazySeq.java:49)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.PersistentHashSet.create (PersistentHashSet.java:43)
clojure.core$set.invoke (core.clj:3782)
leiningen.clean$protected_paths.invoke (clean.clj:40)
leiningen.clean$protected_path_QMARK_.invoke (clean.clj:53)
leiningen.clean$sanity_check.invoke (clean.clj:78)
leiningen.clean$clean.invoke (clean.clj:91)
clojure.lang.Var.invoke (Var.java:379)
clojure.lang.AFn.applyToHelper (AFn.java:154)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invoke (core.clj:626)
leiningen.core.main$partial_task$fn__5914.doInvoke (main.clj:240)
clojure.lang.RestFn.invoke (RestFn.java:410)
clojure.lang.AFn.applyToHelper (AFn.java:154)
clojure.lang.RestFn.applyTo (RestFn.java:132)
clojure.lang.AFunction$1.doInvoke (AFunction.java:29)
clojure.lang.RestFn.applyTo (RestFn.java:137)
clojure.core$apply.invoke (core.clj:626)
leiningen.core.main$apply_task.invoke (main.clj:290)
leiningen.core.main$resolve_and_apply.invoke (main.clj:296)
leiningen.core.main$_main$fn__5979.invoke (main.clj:366)
leiningen.core.main$_main.doInvoke (main.clj:353)
clojure.lang.RestFn.invoke (RestFn.java:408)
clojure.lang.Var.invoke (Var.java:379)
clojure.lang.AFn.applyToHelper (AFn.java:154)
clojure.lang.Var.applyTo (Var.java:700)
clojure.core$apply.invoke (core.clj:624)
clojure.main$main_opt.invoke (main.clj:315)
clojure.main$main.doInvoke (main.clj:420)
clojure.lang.RestFn.invoke (RestFn.java:436)
clojure.lang.Var.invoke (Var.java:388)
clojure.lang.AFn.applyToHelper (AFn.java:160)
clojure.lang.Var.applyTo (Var.java:700)
clojure.main.main (main.java:37)
토론 #1
검사 적체 작업...존재하지 않는 경로라기보다는 무효한 경로에 관한 것이다.대략lib/*
은 Windows에서 허용되지 않습니다.Linux에서 설정:resource-paths ["lib\000"]
할 때 같은 이상이 발생하지만 약간의 오류 메시지가 있습니다.$ lein clean
java.io.IOException: Invalid file path
at java.io.File.getCanonicalPath (File.java:616)
sun.reflect.NativeMethodAccessorImpl.invoke0 (NativeMethodAccessorImpl.java:-2)
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke (Method.java:498)
clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:167)
clojure.lang.Reflector.invokeNoArgInstanceMember (Reflector.java:438)
leiningen.clean$protected_paths$fn__5732.invoke (clean.clj:38)
clojure.core$map$fn__5851.invoke (core.clj:2753)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.ChunkedCons.chunkedNext (ChunkedCons.java:59)
clojure.core$chunk_next.invokeStatic (core.clj:708)
clojure.core$reduce1.invokeStatic (core.clj:942)
clojure.core$set.invokeStatic (core.clj:4113)
clojure.core$set.invoke (core.clj:4105)
leiningen.clean$protected_paths.invokeStatic (clean.clj:32)
leiningen.clean$protected_paths.invoke (clean.clj:28)
...
우리가 여기서 무엇을 해야 할지 확실하지 않다.토론 #2
최초의 문제는 내가 도대체 무슨 일이 일어났는지 알아내는 데 많은 시간을 들였다는 것이다. 왜냐하면 내가 말한 바와 같이 만약 이 오류가 서명한 항목에서 발생한다면 그것은 완전히 소리 없이 실패할 것이다.나는 단지 나의 주요 항목에서 이상한 행동을 보였을 뿐, 어디에 문제가 생겼는지 모르고 코드에서 원인을 찾았다.그래서 제 생각은 주로 문제 검출과 오류 메시지가 개선될 수 있고 적어도 문제가 될 수 있다는 생각입니다.
토론 #셋
아, 그래.이런 상황에서 여기에는 두 가지 다른 문제가 있을 수 있다.하나는 파일 경로가 잘못되었을 때 발생하는 모호한 오류 메시지입니다. 불행하게도, 우리는 항상 파일 조작을 사용하기 때문에 일반적인 해결 방안이 필요할 수도 있습니다."잘못된 정보"고지서가 필요합니다. #2150...또 다른 문제는 실패한 후에 컴파일할 수 없는 서명?나는 서명한 실현에 익숙하지 않아서, 우리는 복제기가 필요할 수도 있다.
Reference
이 문제에 관하여(lein clean 윈도우즈에 존재하지 않는 자원 경로에서 실패), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/technomancy/leiningen/issues/1872텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)