Ошибка компиляции проекта Sbt java .lang.NoSuchFieldError: O_TMPFILE - PullRequest
1 голос
/ 25 февраля 2020

Я клонировал проект 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)
    })

Мне нужно понять причину ошибки и окончательное исправление. Я погуглил более чем достаточно, но это не решило мою проблему.

1 Ответ

0 голосов
/ 25 февраля 2020

Полагаю, что documentationGenerate использует j Ruby для внутреннего использования, а j Ruby имеет проблему с java 11 (не уверен, если это так). Мое предложение - запустить sbt с использованием java8 и посмотреть, что произойдет.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...