Sbt项目编译错误java.lang.NoSuchFieldError:O_TMPFILE



我已经克隆了sbt项目,它已经成功编译并解决了所有依赖项。

但当我运行它或运行一个干净的测试时,它会出现以下编译错误:

[error] java.lang.NoSuchFieldError: O_TMPFILE
[error]     at org.jruby.RubyFile.createFileClass(RubyFile.java:202)
[error]     at org.jruby.Ruby.initCore(Ruby.java:1486)
[error]     at org.jruby.Ruby.bootstrap(Ruby.java:1270)
[error]     at org.jruby.Ruby.init(Ruby.java:1170)
[error]     at org.jruby.Ruby.newInstance(Ruby.java:334)
[error]     at org.jruby.javasupport.JavaEmbedUtils.initialize(JavaEmbedUtils.java:79)
[error]     at org.asciidoctor.internal.JRubyAsciidoctor.createJRubyAsciidoctorInstance(JRubyAsciidoctor.java:126)
[error]     at org.asciidoctor.internal.JRubyAsciidoctor.create(JRubyAsciidoctor.java:57)
[error]     at org.asciidoctor.Asciidoctor$Factory.create(Asciidoctor.java:668)
[error]     at StreamApiBuild$.documentationGenerate(StreamApiBuild.scala:32)
[error]     at $bb5b1f84bcb741e43d80$.$anonfun$StreamService$7(build.sbt:43)
[error]     at sbt.std.Transform$$anon$3.$anonfun$apply$2(System.scala:46)
[error]     at sbt.std.Transform$$anon$4.work(System.scala:67)
[error]     at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:278)
[error]     at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error]     at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error]     at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] (Compile / managedResources) java.lang.NoSuchFieldError: O_TMPFILE

在我们的项目O_TMPFILE中没有这样的文件。

但当我在build.sbt中评论以下几行时,它运行良好。

.settings(resourceGenerators in Compile += task[Seq[File]] {
documentationGenerate((resourceManaged in Compile).value, name.value, version.value, baseDirectory.value)
})

我需要了解错误的原因和永久修复。我在谷歌上搜索了很多,但它并没有解决我的问题。

我猜documentationGenerate在内部使用jRuby,而jRuby在java 11方面有问题(不确定这里的情况(。我的建议是使用java8运行sbt,看看会发生什么。

https://github.com/jruby/jruby/issues/5334

最新更新