Пакет cmake jar не может быть выполнен: отсутствует главный атрибут манифеста - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть очень простой проект cmake-java из Интернета, как показано ниже:

cat HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

Затем файл CMakeLists.txt:

cmake_minimum_required (VERSION 2.8)
find_package(Java REQUIRED)
include(UseJava)
enable_testing()
project (HelloWorld)
set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.8" "-target" "1.8")
add_jar(HelloWorld HelloWorld.java)
get_target_property(_jarFile HelloWorld JAR_FILE)
get_target_property(_classDir HelloWorld CLASSDIR)
message(STATUS "Jar file ${_jarFile}")
message(STATUS "Class compiled to ${_classDir}")
add_test(NAME TestHelloWorld COMMAND ${Java_JAVA_EXECUTABLE} -cp ${_jarFile} HelloWorld)

Я на centos7 с jdk 1.8 и cmake 3.8, затем

cmake . && make -j8

Есть файл HelloWorld.jar и выдает ошибку при запуске:

java -jar HelloWorld.jar HelloWorld

no main manifest attribute, in HelloWorld.jar

Да, естьвнутри него нет определения основного класса:

$ cat META-INF/MANIFEST.MF 
Manifest-Version: 1.0
Created-By: 1.8.0_191 (Oracle Corporation)

Я просто хотел бы знать, как добавить контент в MANIFEST.MF с помощью cmake, не могли бы вы объяснить?Большое спасибо.

1 Ответ

0 голосов
/ 11 февраля 2019

Используйте параметр MANIFEST команды add_jar , чтобы добавить пользовательский файл манифеста.

Например, чтобы добавить файл манифеста из текущего исходного каталога cmake, используйте:

add_jar(HelloWorld HelloWorld.java MANIFEST "${CMAKE_CURRENT_SOURCE_DIR}/MANIFEST.MF")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...