OPAL-Как построить код в Docker на локальной машине (столкнулся с ошибкой компиляции)?

Я обращаюсь к коду в Docker($docker pull mreif/fse2016: оценка), код может быть скомпилирован и запущен без ошибок на удаленном сервере. В то время как я загружаю его на локальную машину, я столкнулся с некоторыми ошибками при компиляции (используя: sbt compile):

  1. [ошибка] (*: обновление) sbt.ResolveException: неразрешенная зависимость: de.opal-project#abstract-интерпретация-framework_2.11;0.9.0-SNAPSHOT: нет

[Что я сделал] Я добавил следующие строки в "build.sbt":

resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
  1. [ошибка] оценка /src/main/scala/org/opalj/valuation/EntryPointAndCallEdgeCountAnalysis.scala:90: не найдено:

[Что я сделал] Я добавил следующие строки в "build.sbt":

 libraryDependencies += "de.opal-project" % "fixpoint-computations-framework-analyses_2.11" % "0.9.0-   SNAPSHOT"

3. [ошибка] /src/main/scala/org/opalj/evaluation/EntryPointAndCallEdgeCountAnalysis.scala:130: не найдено: значение LibraryEntryPointsAnalysis

Я проверил соответствующий код, LibraryEntryPointsAnalysis фактически импортирован, но не работает.

Не могли бы вы помочь мне подтвердить, есть ли какие-либо операции, которые я пропустил для компиляции исходного кода?

Большое спасибо!

Jiang

1 ответ

Решение

Причиной, по которой он не работает, является несоответствие версии платформы OPAL. Причина, по которой он не находит "LibraryEntryPointAnalysis", заключается в том, что он был переименован.

У вас есть варианты:

  1. Используйте версию OPAL, которая используется в контейнере Docker
    • проверить OPAL в теге версии "ArtifactEvaluationFSE2016"
    • скопируйте OPAl из контейнера, как вы сделали с оценочным проектом
  2. Адаптируйте оценочный проект к новому API
    • LibraryEntryPointsAnalysis теперь вызывается EntryPointAnalysis
    • Есть, вероятно, другие серьезные изменения, которые вы должны исправить

Если вы хотите использовать первый вариант, вы должны собрать OPAL самостоятельно, потому что eval-версия не опубликована на maven.

Другие вопросы по тегам