Я хочу использовать sbt-launcher
, чтобы получить SBT и запустить его. У меня следующее sbt.boot.properties
:
[scala]
version: ${sbt.scala.version-auto}
[app]
org: ${sbt.organization-org.scala-sbt}
name: sbt
version: ${sbt.version-read(sbt.version)[1.3.7]}
class: ${sbt.main.class-sbt.xMain}
components: xsbti,extra
cross-versioned: ${sbt.cross.versioned-false}
resources: ${sbt.extraClasspath-}
[repositories]
local
maven-central: http://artifactory.corp.com/artifactory/joined-maven-releases
typesafe-ivy-releases: http://artifactory.corp.com/artifactory/joined-ivy-releases, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]
[boot]
directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}
[ivy]
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}
checksums: ${sbt.checksums-sha1,md5}
override-build-repos: ${sbt.override.build.repos-false}
repository-config: ${sbt.repository.config-${sbt.global.base-${user.home}/.sbt}/repositories}
Если я установлю SBT vertions на 0.13.18
, он будет работать нормально: version: ${sbt.version-read(sbt.version)[0.13.18]}
, однако в последней версии я получаю ошибку stackOverflow:
[info] [launcher] getting org.scala-sbt sbt 1.3.7 (this may take some time)...
java.lang.StackOverflowError
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader$3.next(Unknown Source)
at java.net.URLClassLoader$3.hasMoreElements(Unknown Source)
at sun.misc.CompoundEnumeration.next(Unknown Source)
at sun.misc.CompoundEnumeration.hasMoreElements(Unknown Source)
at sun.misc.CompoundEnumeration.next(Unknown Source)
at sun.misc.CompoundEnumeration.hasMoreElements(Unknown Source)
at java.util.ServiceLoader$LazyIterator.hasNextService(Unknown Source)
at java.util.ServiceLoader$LazyIterator.hasNext(Unknown Source)
at java.util.ServiceLoader$1.hasNext(Unknown Source)
at javax.xml.parsers.FactoryFinder$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.xml.parsers.FactoryFinder.findServiceProvider(Unknown Source)
at javax.xml.parsers.FactoryFinder.find(Unknown Source)
at javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
at org.apache.ivy.util.XMLHelper.getDocBuilder(XMLHelper.java:213)
at org.apache.ivy.util.XMLHelper.parseToDom(XMLHelper.java:207)
at org.apache.ivy.plugins.parser.m2.PomReader.<init>(PomReader.java:95)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:122)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:112)
at org.apache.ivy.core.cache.ModuleDescriptorProvider.provideModule$6172736d(ModuleDescriptorProvider.java:716)
at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:1195)
at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:536)
at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:271)
at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:538)
at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseOtherPom(PomModuleDescriptorParser.java:382)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:143)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:112)
at org.apache.ivy.core.cache.ModuleDescriptorProvider.provideModule$6172736d(ModuleDescriptorProvider.java:716)
at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
Почему именно это происходит, как я могу отладить его наилучшим образом? Когда я пытаюсь получить SBT 1.3.7 с помощью maven, он работает нормально, поэтому он доступен в репозитории.
Я запускаю sbt-launcher
следующим образом:
set SCRIPT_DIR=%~dp0
java -Xmx8G -Xss2G -jar "%SCRIPT_DIR%launcher-1.1.3.jar" %*
Добавление:
Я обнаружил, что последняя версия, с которой он работает, - это 1.2.3, когда я изменяю его на 1.2.4, он выдает следующую трассировку стека до тех пор, пока не возникнет ошибка StackOverflow:
at org.apache.ivy.plugins.resolver.BasicResolver.parse(BasicResolver.java:536)
at org.apache.ivy.plugins.resolver.BasicResolver.getDependency(BasicResolver.java:271)
at org.apache.ivy.plugins.resolver.IBiblioResolver.getDependency(IBiblioResolver.java:538)
at org.apache.ivy.plugins.resolver.ChainResolver.getDependency(ChainResolver.java:104)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseOtherPom(PomModuleDescriptorParser.java:382)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:143)
at org.apache.ivy.plugins.parser.m2.PomModuleDescriptorParser.parseDescriptor(PomModuleDescriptorParser.java:112)
at org.apache.ivy.core.cache.ModuleDescriptorProvider.provideModule$6172736d(ModuleDescriptorProvider.java:716)
at org.apache.ivy.core.cache.ModuleDescriptorMemoryCache.getStale(ModuleDescriptorMemoryCache.java:68)
at org.apache.ivy.core.cache.DefaultRepositoryCacheManager.cacheModuleDescriptor(DefaultRepositoryCacheManager.java:1195)