Как я могу запустить Java JAR, созданный из Intellij из командной строки - PullRequest
0 голосов
/ 01 октября 2018

Я прочитал этот ТАК пост и следовал инструкциям, но все равно не могу его запустить.

Я попытался запустить его следующим образом

Directory_where_jar_is_located $ java -jar Main.java
Error: Unable to access jarfile IcerbergRun
Directory_where_jar_is_located$ java -jar ProjectName.jar 
Error: Could not find or load main class IcebergRun

Что нужно сделать после этого?Каковы эти зависимости?Кроме того, я делюсь своим pom.xml, в котором есть несколько библиотек, необходимых для моего проекта.

enter image description here

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>SparkIceberg</groupId>
<artifactId>SparkTut</artifactId>
<version>1.0-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <!--<logger name="org.apache.catalina.core" level="OFF" />-->
            </configuration>
        </plugin>
    </plugins>
</build>
<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>


<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.11</artifactId>
        <version>2.3.2</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.417</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-spark</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-data</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-common</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-api</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-core</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-parquet</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.Netflix.iceberg</groupId>
        <artifactId>iceberg-orc</artifactId>
        <version>0.3.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-aws</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-hdfs</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.parquet</groupId>
        <artifactId>parquet-common</artifactId>
        <version>1.10.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.parquet</groupId>
        <artifactId>parquet-column</artifactId>
        <version>1.10.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.parquet</groupId>
        <artifactId>parquet-hadoop</artifactId>
        <version>1.10.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>1.8.2</version>
    </dependency>
</dependencies>

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Так что я не уверен, почему мой JAR, созданный IntelliJ, не смог выполнить и получил Could not load main class, поэтому я попробовал весь свой java-проект в командной строке и сгенерировал JAR, который работал для меня.

Вот шаги:

1.Установите maven на ec2 https://gist.github.com/sebsto/19b99f1fa1f32cae5d00

$sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
$sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo
$sudo yum install -y apache-maven
$mvn —version

2.Также установите следующее

$sudo yum install java-1.8.0-openjdk-devel
$yum install zip

3.Сделайте это, чтобы создать проект maven http://www.mkyong.com/maven/how-to-create-a-java-project-with-maven/

$mvn archetype:generate -DgroupId=com.package.name -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

4.Редактировать файлы кода и pom.xml.Вы можете открыть проект в IntelliJ и отредактировать.

5.MAVEN BUILD: Запустите из корневого каталога вашего Java-проекта

java-project$mvn package or mvn clean package

6.Удалите эти файлы, созданные после сборки

https://gist.github.com/hkhamm/88923412992d284580ea

java-project$zip -d target/iceberg-project-1.0-SNAPSHOT.jar META-INF/*.RSA META-INF/*.DSA META-INF/*.SF

7.Запустите JAR

java-project$java -cp target/java-project-1.0-SNAPSHOT.jar com.project.name.App
0 голосов
/ 01 октября 2018

Я создал тестовый проект в java, построил и выполнил jar.

Изначально структура проекта выглядела так, как показано ниже.Каталог out содержит только рабочий каталог.Initial

Теперь нажмите Файл-> Структура проекта-> Артефакты.Нажмите на знак + рядом с левой панелью навигации в верхнем левом углу.

enter image description here

Теперь нажмите на знак + и выберите Jar-> из модуля с зависимостями .... Появится диалоговое окно, как показано ниже:

enter image description here

Теперь выберите Main Class, выберите radio button перед extract to the target JAR и нажмите OK.Вы увидите следующее enter image description here:

Отметьте Include in project build checkbox и нажмите Apply->Ok.

enter image description here

Нажмите на Build->Build Project.Теперь вы можете видеть, что out directory имеет artifacts sub-directory, который будет иметь соответствующий jar

enter image description here

Теперь на терминале в intelliJ перейдите в каталог, гдеjar присутствует и выполните команду java -jar JAR_NAME.jar, и вы можете видеть, что основная функция выполняется.

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