OPAL-Как построить код в Docker на локальной машине (столкнулся с ошибкой компиляции)?
Я обращаюсь к коду в Docker($docker pull mreif/fse2016: оценка), код может быть скомпилирован и запущен без ошибок на удаленном сервере. В то время как я загружаю его на локальную машину, я столкнулся с некоторыми ошибками при компиляции (используя: sbt compile):
- [ошибка] (*: обновление) 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"
- [ошибка] оценка /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", заключается в том, что он был переименован.
У вас есть варианты:
- Используйте версию OPAL, которая используется в контейнере Docker
- проверить OPAL в теге версии "ArtifactEvaluationFSE2016"
- скопируйте OPAl из контейнера, как вы сделали с оценочным проектом
- Адаптируйте оценочный проект к новому API
- LibraryEntryPointsAnalysis теперь вызывается
EntryPointAnalysis
- Есть, вероятно, другие серьезные изменения, которые вы должны исправить
- LibraryEntryPointsAnalysis теперь вызывается
Если вы хотите использовать первый вариант, вы должны собрать OPAL самостоятельно, потому что eval-версия не опубликована на maven.