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...
또 다른 문제는 실패한 후에 컴파일할 수 없는 서명?나는 서명한 실현에 익숙하지 않아서, 우리는 복제기가 필요할 수도 있다.

좋은 웹페이지 즐겨찾기