Как скомпилировать и выполнить Java проект из командной строки? - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь скомпилировать и запустить java проект, выполненный в IntelliJ, из командной строки, и я немного озадачен тем, как это сделать. Это структура моего проекта:

├───src
│   ├───main
│   │   ├───java
│   │   │   │   Main.java // Main method's in here.
│   │   │   │
│   │   │   ├───objectclasses
│   │   │   │       Application.java
│   │   │   │
│   │   │   └───utils
│   │   │           Defs.java
│   │   │           Api.java
│   │   │           FileIO.java
│   │   │
│   │   └───resources
│   │           applicationIDs.tmp
│   │           applications.csv
│   │
│   └───test
│       └───java
└───target
    // .class files compiled by IntelliJ

Зайдите в командную строку, перейдите в каталог java и просто наберите:

javac Main.java

не работает и возвращает ошибки, говоря что все пакеты и символы, указанные в коде, не могут быть найдены. Я также попытался перейти к каталогу root и запустить:

javac -d target -sourcepath src src/main/java/Main.java

, который возвращает похожие ошибки. Наконец, я попытался сделать следующее: «Нет исходных файлов»:

$ javac -d target -sourcepath src -cp . 

Возвращаемая ошибка:

src\main\java\Main.java:1: error: package objectclasses does not exist
import objectclasses.Application;
                    ^
src\main\java\Main.java:2: error: package utils does not exist
import utils.Defs;
            ^
src\main\java\Main.java:3: error: package utils does not exist
import utils.Api;
            ^
src\main\java\Main.java:4: error: package utils does not exist
import utils.FileIO;
            ^
src\main\java\Main.java:58: error: cannot find symbol
    private static void updateApplicationsFile(List<Application> applications)
                                                    ^
  symbol:   class Application
  location: class Main
src\main\java\Main.java:17: error: cannot find symbol
        Api api= new Api(
        ^
  symbol:   class Api
  location: class Main
src\main\java\Main.java:17: error: cannot find symbol
        Api api = new Api(
        ^
  symbol:   class Api
  location: class Main
src\main\java\Main.java:18: error: cannot find symbol
                Defs.API_JSONRPC,
                ^
  symbol:   variable Defs
  location: class Main
src\main\java\Main.java:19: error: cannot find symbol
                Defs.API_ID,
                ^
  symbol:   variable Defs
  location: class Main
src\main\java\Main.java:20: error: cannot find symbol
                Defs.API_KEY,
                ^
  symbol:   variable Defs
  location: class Main
src\main\java\Main.java:21: error: cannot find symbol
                Defs.API_SESSION_ID,
                ^
  symbol:   variable Defs
  location: class Main
src\main\java\Main.java:22: error: cannot find symbol
                Defs.API_DOMAIN);
                ^
  symbol:   variable Defs
  location: class Main
src\main\java\Main.java:26: error: cannot find symbol
        List<Application> applications = api.getApplicationsFromIDList(applicationIDs);
             ^
  symbol:   class Application
  location: class Main
src\main\java\Main.java:40: error: cannot find symbol
            FileIO.writeIDsToFile(applicationIDs);
            ^
  symbol:   variable FileIO
  location: class Main
src\main\java\Main.java:63: error: cannot find symbol
            FileIO.writeApplicationsToFile(applications);
            ^
  symbol:   variable FileIO
  location: class Main
15 errors

Я никогда раньше такого не делал так что я, наверное, упускаю что-то очевидное. Любая помощь?

Ответы [ 3 ]

1 голос
/ 11 апреля 2020

Так что мне удалось заставить файл работать из командной строки благодаря Тило. Это был проект Maven, что означает, что он должен быть скомпилирован и запущен с помощью команд Maven. Это были шаги, которые я предпринял:

Шаг 1: Убедитесь, что Maven установлен .

Шаг 2: Откройте pom.xml в папке root моего project.

Шаг 3: Добавьте следующий плагин в теги <build><plugins></plugins></build>:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>Main</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

Шаг 4: Перейдите в папку root проекта в командной строке.

Шаг 5: Запустите mvn compile и mvn package.

Шаг 6: Запомните расположение файла JAR в каталоге, указанном в возвращенных журналах. В моем случае это было:

target\App-1.0-SNAPSHOT-jar-with-dependencies.jar

Шаг 7. Запустите файл JAR с java -jar target\App-1.0-SNAPSHOT-jar-with-dependencies.jar

0 голосов
/ 11 апреля 2020

Пожалуйста, попробуйте следующие шаги: - Экспортируйте исполняемый файл для вашего проекта из intellij. Пожалуйста, обратитесь { ссылка } о том, как это сделать. - Убедитесь, что ваша системная переменная Path установлена ​​на java bin. - Перейдите к пути, куда вы экспортировали файл JAR, и запустите

java myjarfile.jar
0 голосов
/ 11 апреля 2020

Для этого вам нужно указать путь, по которому вы сохранили ваш файл. java. если он находится в документах (папке), просто напишите в командной строке:

1) cd документов если вы создали папку внутри документов, то напишите:

2) cd foldername и затем для компиляции напишите:

3) javac (пробел) ваше имя файла вместе с расширением. java. (java c означает java compile), если ваш проект содержит ошибку во время компиляции, он предложит на этом этапе. После компиляции вы должны написать:

4) java (пробел) ваше имя файла без расширения . потому что на этот раз мы собрали наш проект. и бум

Раньше я запускал свой проект java таким образом ... но извините, что использовал блокнот, а не IntelliJ. Надеюсь, это поможет ... Согласно названию вашего вопроса ответ правильный.

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