[SCALA] 임베디드 스칼라 REPL 상속 부모 클래스 경로
SCALA임베디드 스칼라 REPL 상속 부모 클래스 경로
스칼라 메일 링리스트에이 스레드에 질문으로, 어떻게 내장 스칼라 REPL을 만들 수 있습니다 상속 부모 프로그램의 클래스 경로? 스칼라 프로그램을 사용하여 시작됩니다 부모 가정 스칼라 -cp <클래스 패스> ...; <클래스 패스> 문자열로 액세스와 내장 REPL을 초기화 할 수 있을까? (은 System.getProperty ( "java.class.path를"을 통해 자바 클래스 경로, 가능), 스칼라 클래스 경로에서 차이가 나타납니다.)
또한, 아마도 내장 스칼라 REPL은 상속 또는 부모 프로세스로부터 클래스 로더를 구성 할 수 있습니다 (마이클 Dürig의 ScalaDays 2010 이야기와 관련이 있음). 이것은 권장되는 방법인가?
해결법
-
==============================
1.나는 같은 일을 할 노력하고있어, 난 그냥 인터넷 검색하여 길 내 밖으로 발견 :
나는 같은 일을 할 노력하고있어, 난 그냥 인터넷 검색하여 길 내 밖으로 발견 :
lazy val urls = java.lang.Thread.currentThread.getContextClassLoader match { case cl: java.net.URLClassLoader => cl.getURLs.toList case _ => error("classloader is not a URLClassLoader") } lazy val classpath = urls map {_.toString}
위의 코드는 당신에게 현재 컨텍스트에서 클래스 경로를 가져옵니다.
settings.classpath.value = classpath.distinct.mkString(java.io.File.pathSeparator)
당신의 settings.classpath에 그것을 넣어 당신은 파견 또는 어떤 라이브러리가 필요을 발사 할 수 있어야한다.
-
==============================
2.true로 usejavacp 속성을 설정합니다 :
true로 usejavacp 속성을 설정합니다 :
val settings = new scala.tools.nsc.Settings settings.usejavacp.value = true
-
==============================
3.실행중인 스칼라 프로그램 내에서 "스칼라 클래스 경로"에 접근 할 수있는 쉬운 방법이있을 것 같지 않습니다 (대조적으로 "자바 클래스 패스"는 java.class.path를 시스템 속성을 통해 가능). 하나는, 예를 들어, 액세스 scala.tools.PathResolver의 인스턴스의 필드 Calculated.userClasspath을 싶지만, 후자는 접근하지 않는 것 같습니다. 아마도 가장 쉬운 해결 방법은 환경 변수에 -classpath 매개 변수 문자열을 저장하는 스칼라 시작 스크립트를 수정하는 것입니다.
실행중인 스칼라 프로그램 내에서 "스칼라 클래스 경로"에 접근 할 수있는 쉬운 방법이있을 것 같지 않습니다 (대조적으로 "자바 클래스 패스"는 java.class.path를 시스템 속성을 통해 가능). 하나는, 예를 들어, 액세스 scala.tools.PathResolver의 인스턴스의 필드 Calculated.userClasspath을 싶지만, 후자는 접근하지 않는 것 같습니다. 아마도 가장 쉬운 해결 방법은 환경 변수에 -classpath 매개 변수 문자열을 저장하는 스칼라 시작 스크립트를 수정하는 것입니다.
원하는 스칼라 클래스 경로가 결정될 수있다 가정하면,이를 통해 임베디드 스칼라 인터프리터에 전달 될 수있다 : settings.classpath.value = ...
업데이트 : 스칼라 클래스 경로 문자열이 스칼라 런타임에서 직접 달성되지 않을 수 있지만, @Eugene는이 컨텍스트 클래스 로더에서 추출 할 수 있음을 지적한다. 감사.
from https://stackoverflow.com/questions/4121567/embedded-scala-repl-inherits-parent-classpath by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 기능의 요소의 공변 및 contravariant 위치를 확인하려면? (0) | 2019.11.22 |
---|---|
[SCALA] 스칼라 SBT와 기업의 프록시 - SunCertPathBuilderException (0) | 2019.11.22 |
[SCALA] 사람이 기호가 "=>"스칼라에서 어떻게 사용되는지 설명 할 수 (0) | 2019.11.22 |
[SCALA] 스파크 및 SparkSQL : 어떻게 모방 윈도우 함수에? (0) | 2019.11.22 |
[SCALA] 스칼라 여러 Seqs의 게으른 직교 제품 (0) | 2019.11.22 |