jbang
jbang copied to clipboard
StackOverFlowError at ProjectBuilder.updateProject(ProjectBuilder.java:641)
We get an exception while building a JBang script - https://github.com/JabRef/jabref/actions/runs/19213767849/job/54919954788?pr=14259
Exception in thread "main" java.lang.StackOverflowError
at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4915)
at java.base/java.util.regex.Pattern$BranchConn.match(Pattern.java:4879)
at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:5001)
at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4913)
at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:5001)
at java.base/java.util.regex.Pattern$CharPropertyGreedy.match(Pattern.java:4471)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4970)
at java.base/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:4135)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4970)
at java.base/java.util.regex.Pattern$Branch.match(Pattern.java:4915)
at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:5001)
at java.base/java.util.regex.Pattern$BmpCharPropertyGreedy.match(Pattern.java:4510)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4970)
at java.base/java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:4135)
at java.base/java.util.regex.Pattern$GroupTail.match(Pattern.java:5001)
at java.base/java.util.regex.Pattern$BmpCharPropertyGreedy.match(Pattern.java:4510)
at java.base/java.util.regex.Pattern$GroupHead.match(Pattern.java:4970)
at java.base/java.util.regex.Pattern$Begin.match(Pattern.java:3852)
at java.base/java.util.regex.Matcher.search(Matcher.java:1765)
at java.base/java.util.regex.Matcher.find(Matcher.java:785)
at dev.jbang.dependencies.DependencyUtil.looksLikeAPossibleGav(DependencyUtil.java:158)
at dev.jbang.source.parser.Directives.isGav(Directives.java:82)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:196)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:807)
at java.base/java.util.stream.ReferencePipeline$7$1FlatMap.accept(ReferencePipeline.java:294)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:215)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1716)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:570)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:560)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:265)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:727)
at dev.jbang.source.parser.Directives.binaryDependencies(Directives.java:65)
at dev.jbang.source.Source.collectBinaryDependencies(Source.java:87)
at dev.jbang.source.ProjectBuilder.updateProject(ProjectBuilder.java:641)
at dev.jbang.source.ProjectBuilder.updateProject(ProjectBuilder.java:671)
at dev.jbang.source.ProjectBuilder.updateProject(ProjectBuilder.java:671)
at dev.jbang.source.ProjectBuilder.updateProject(ProjectBuilder.java:671)
Our script:
///usr/bin/env jbang "$0" "$@" ; exit $?
//DESCRIPTION jabls - start a bibtex languageserver
//JAVA 24
//RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED
//SOURCES ../jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java
//FILES tinylog.properties=../jabls-cli/src/main/resources/tinylog.properties
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/BibtexTextDocumentService.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/BibtexWorkspaceService.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/controller/LanguageServerController.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/ExtensionSettings.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/LspClientHandler.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/LspLauncher.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspConsistencyCheck.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspDiagnosticBuilder.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspDiagnosticHandler.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspIntegrityCheck.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspLinkHandler.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspParserHandler.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/LspRangeUtil.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/DefinitionProvider.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/DefinitionProviderFactory.java
//SOURCES ../jabls/src/main/java/org/jabref/languageserver/util/definition/MarkdownDefinitionProvider.java
// REPOS mavencentral,snapshots=https://central.sonatype.com/repository/maven-snapshots/
// REPOS mavencentral,mavencentralsnapshots=https://central.sonatype.com/repository/maven-snapshots/,s01oss=https://s01.oss.sonatype.org/content/repositories/snapshots/,oss=https://oss.sonatype.org/content/repositories,jitpack=https://jitpack.io,oss2=https://oss.sonatype.org/content/groups/public,ossrh=https://oss.sonatype.org/content/repositories/snapshots
//REPOS mavencentral,mavencentralsnapshots=https://central.sonatype.com/repository/maven-snapshots/,s01oss=https://s01.oss.sonatype.org/content/repositories/snapshots/,oss=https://oss.sonatype.org/content/repositories,jitpack=https://jitpack.io,oss2=https://oss.sonatype.org/content/groups/public,ossrh=https://oss.sonatype.org/content/repositories/snapshots,raw=https://raw.githubusercontent.com/JabRef/jabref/refs/heads/main/jablib/lib/
// REPOS mavencentral,jitpack=https://jitpack.io/
// Choose one - both should work
// https://central.sonatype.com/service/rest/repository/browse/maven-snapshots/org/jabref/jablib/
//DEPS org.jabref:jablib:6.0-SNAPSHOT
// https://jitpack.io/#jabref/jabref/main-SNAPSHOT
// DEPS com.github.jabref:jabref:main-SNAPSHOT
//DEPS io.github.darvil82:terminal-text-formatter:2.2.0
//DEPS info.picocli:picocli:4.7.7
//DEPS org.jspecify:jspecify:1.0.0
// from jabls
//DEPS com.fasterxml.jackson.core:jackson-annotations:2.20
//DEPS tools.jackson.core:jackson-databind:3.0.2
//DEPS tools.jackson.dataformat:jackson-dataformat-yaml:3.0.2
//DEPS com.github.eclipse:lsp4j:0.24.0
//DEPS info.picocli:picocli:4.7.7
//DEPS org.apache.logging.log4j:log4j-to-slf4j:2.25.2
//DEPS org.jabref:afterburner.fx:2.0.0
//DEPS org.slf4j:jul-to-slf4j:2.0.17
//DEPS org.slf4j:slf4j-api:2.0.17
//DEPS org.tinylog:slf4j-tinylog:2.7.0
//DEPS org.tinylog:tinylog-impl:2.7.0
//DEPS com.github.ben-manes.caffeine:caffeine:3.2.3
/// This class is required for [jbang](https://www.jbang.dev/)
public class JabLsLauncher {
public static void main(String[] args) throws Exception {
org.jabref.languageserver.cli.ServerCli.main(args);
}
}
//SOURCES ../.jbang/JabLsLauncher.java
//SOURCES ../jablib/src/main/java/org/jabref/logic/citationstyle/CSLStyleLoader.java
//SOURCES ../jablib/src/main/java/org/jabref/logic/crawler/StudyYamlParser.java
//SOURCES ../jablib/src/main/java/org/jabref/logic/importer/fileformat/CffImporter.java
//SOURCES ../jablib/src/main/java/org/jabref/logic/util/MscCodeUtils.java
User error - if JBang script includes itself then there is an endless loop.
//SOURCES ../.jbang/JabLsLauncher.java
Hmm - we are supposed to be detecting that and not fail. At least inform user.