나는 classloaders와 specs2 3.8.7+에 이상한 점을 경험했다. 클래스 로더가 sbt에 의해 겉으로보기에 관리되기 때문에, 여기에서 sbt의 동작에 대해 특별히 묻습니다.하위 프로젝트 specs2 실행에서 sbt가 올바른 클래스 로더를 사용하도록하려면 어떻게해야합니까?
저는 Github에서이 문제를 보여주는 샘플 프로젝트를 Shadowfiend/specs2-concurrent-boom-boom에 제출했습니다. 관찰 된 바와 같이, 을 실행하면 project2가 인 ClasspathFilter
이 project2가 아닌 project1을 참조하는 스레드 컨텍스트 클래스 로더 또는 그 반대의 경우가 될 수 있습니다. 경우에 따라 프로젝트 1의 작업자가 프로젝트 2의 ClasspathFilter
및 을 참조 할 것입니다. 프로젝트 2의 작업자는 프로젝트 1의 ClasspathFilter
을 동시에 참조합니다. all project1/test project2/test
을 실행하는 경우에도
ForkJoinPool
실제로 specs2 생성되는 것을보고, 심지어 포크 은 : 진정한 =. 해당 풀의 모든 스레드가 같은 클래스 로더 부모 또는 무엇으로 까지 끝날 지 100 % 확신 할 수는 없지만 문제의 출처는 일 수 있습니다.
나는 여기에 내 깊이 밖으로 조금 해요,하지만 SBT 및 테스트 프레임 워크 클래스 로더의 예상 상호 작용으로 어떤 통찰력을 주셔서 감사합니다 SBT에 의해 을 양산한다.
specs2는 버전 4에 있습니다. 4.0.4 또는 sbt 1.0.4를 의미합니까? –
이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [리뷰에서] (리뷰/저품절 게시물/18394511) – C8H10N4O2