JavaRush/Java Π±Π»ΠΎΠ³/Java Developer/ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java
Автор
Aditi Nawghare
Π˜Π½ΠΆΠ΅Π½Π΅Ρ€-программист Π² Siemens

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ Java Developer
участников
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² IDE β€” прСкрасно: ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ зависимостСй ΠΊΠΎΠ΄Π°, ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Π΄Π΅Π±Π°Π³, понятноС тСстированиС, тСмная Ρ‚Π΅ΠΌΠ°. Π’Π°ΠΊ Π²ΠΎΡ‚, благодаря IDE Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° развиваСтся ΡΠ΅ΠΌΠΈΠΌΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ шагами. Но ΠΎΠ½Π° расслабляСт. Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π΄Π½Π΅ΠΌ, ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°ΡΡΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» IDE, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Π΅Ρ‚ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΈΠ»ΠΈ сборкС двумя ΠΊΠ»ΠΈΠΊΠ°ΠΌΠΈ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java - 1Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅ обстоит ситуация с Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с самого Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² IDE, игнорируя Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. НапримСр, Π² Intellij IDEA компиляция Java прилоТСния дСмонстрируСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½Ρ‹ΠΌ Π±Π°Ρ€ΠΎΠΌ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, Π° всС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компиляции, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° classpath ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… прСлСстСй Java-ΠΆΠΈΠ·Π½ΠΈ остаСтся Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ компиляции Π² Java Π±Π΅Π· IDE. Для запуска ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ слСдуСт ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π° вашСй машинС установлСна JDK 1.7 ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅.

Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ?

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ β€” это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π° Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ старта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ дСйствий ΠΎΡ‚ исходного ΠΊΠΎΠ΄Π° Π΄ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ выглядит Ρ‚Π°ΠΊ:
  1. Π•ΡΡ‚ΡŒ исходный ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ НазваниСКласса.java;
  2. Если Π² ΠΊΠΎΠ΄Π΅ Π½Π΅Ρ‚ ошибок, ΠΎΠ½ компилируСтся Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ (Π² Ρ„Π°ΠΉΠ» НазваниСКласса.class);
  3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСтся.
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ каТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° содСрТится Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅. Π’ качСствС самого простого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм Π²Ρ‹Π²ΠΎΠ΄ Π² консоль:
class Test {
   public static void main(String[] args) {
      System.out.println("Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки");
   }
}

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° javac

ОкСй, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½. ИдСм дальшС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ: ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” это ΠΊΠ°ΠΊ? :) Π’ этом Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° javac, Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

javac Test.java
Если Π½Π΅Ρ‚ ошибок Π² ΠΊΠΎΠ΄Π΅, рядом с Ρ„Π°ΠΉΠ»ΠΎΠΌ Test.java появится Ρ„Π°ΠΉΠ» Test.class. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ скомпилированный Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° java, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π°Ρ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java - 2На ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Ρ‹: ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, это сбитая ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ это происходит Π² систСмС Windows. Для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ отобраТСния ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ Π² консоли, Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

REM change CHCP to UTF-8
CHCP 65001
CLS
Они ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ страницу ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ консоли Π½Π° врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠΊΠ½Π°. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π·:

D:\Java>java Test
Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π—Π½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ javac ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π»Π΅ΠΆΠΈΡ‚ Π² основС любой систСмы сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классов

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими классами Π½ΡƒΠΆΠ΅Π½ classpath. Он ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ содСрТатся классы, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ°ΠΏΠΎΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ (packages). На этом этапС стоит Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠ± ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π° ΠΎΡ‚ скомпилированных Ρ„Π°ΠΉΠ»ΠΎΠ². Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ исходники находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ src, Π° скомпилированныС классы β€” Π² bin. НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ класс Box ΠΈ класс BoxMachine, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится ΠΌΠ΅Ρ‚ΠΎΠ΄ main. Класс Box:
package src;

public class Box {
   private double size;

   public Box(double size) {
       this.size = size;
   }

   public String toString() {
       return "Box have size " + size;
   }
}
Он находится Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ src, это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Класс BoxMachine:
package src;

public class BoxMachine {
   public static void main(String[] args) {
       for(int  i = 0; i < 5; i++) {
           System.out.println(new Box(Math.random()*10));
       }
   }
}
Π­Ρ‚ΠΎΡ‚ класс Ρ‚Π°ΠΊΠΆΠ΅ находится Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ src. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ main ΠΎΠ½ создаСт ΠΏΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса Box Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² консоль ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΈΡ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Π³Ρ€ΡƒΠΏΠΏΡƒ классов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° (Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅ΠΆΠ°Ρ‚ ΠΏΠ°ΠΏΠΊΠΈ src ΠΈ bin) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ javac с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ:

javac -d bin ./src/*
-d β€” Ρ„Π»Π°Π³, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ располоТСниС, ΠΊΡƒΠ΄Π° ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ скомпилированныС классы. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1000 классов β€” ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ процСсс. bin β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ. ./src/* β€” располоТСниС исходных Ρ„Π°ΠΉΠ»ΠΎΠ². * ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ скомпилированныС классы появились Π² ΠΏΠ°ΠΏΠΊΠ΅ bin. Для ΠΈΡ… запуска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° java ΠΈΠ· Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ:

java -classpath ./bin BoxMachine
-classpath β€” Ρ„Π»Π°Π³, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ мСстополоТСниС скомпилированных классов. Java Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ класс ΠΈ всС ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ./bin β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся скомпилированныС классы. BoxMachine β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ класса. Как ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС, Π½Π΅ слСдуСт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ .class, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса, Π° Π½Π΅ Ρ„Π°ΠΉΠ»Π°. Π’Ρ‹Π²ΠΎΠ΄:

D:\Java>java -classpath ./bin src.BoxMachine
Box have size 4.085985295359718
Box have size 8.63682158248986
Box have size 6.027448124299726
Box have size 7.288317703877914
Box have size 1.106181659384694

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ JAR-Ρ„Π°ΠΉΠ»ΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ скомпилированныС классы Π² jar-Ρ„Π°ΠΉΠ» β€” Π°Ρ€Ρ…ΠΈΠ² классов. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ zip ΠΈΠ»ΠΈ rar-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² β€” Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° манифСста. Π’ этом манифСстС указываСтся Π³Π»Π°Π²Π½Ρ‹ΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ jar-Ρ„Π°ΠΉΠ»Π°, classpath, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ Π³Π»Π°Π²Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ создадим Ρ„Π°ΠΉΠ» manifest.mf. Π•Π³ΠΎ содСрТимоС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

main-class: src.BoxMachine
class-path: bin/
main-class ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄ main ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡ€ΠΈ запускС. class-path β€” ΠΏΡƒΡ‚ΡŒ ΠΊ скомпилированным классам ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ. Настало врСмя ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±Π΅Π· IDE с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ jar:

jar -cmf manifest.mf box-machine.jar  -C bin .
-cmf β€” Ρ„Π»Π°Π³, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ слСдуСт ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ манифСста. manifest.mf β€” ΠΏΡƒΡ‚ΡŒ ΠΊ манифСсту. box-machine.jar β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ jar-Ρ„Π°ΠΉΠ»Π°. -Π‘ β€” Ρ„Π»Π°Π³, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ указываСтся ΠΏΡƒΡ‚ΡŒ ΠΊ скомпилированным классам. . β€” ΠΏΡƒΡ‚ΡŒ, ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ jar-Ρ„Π°ΠΉΠ». Π’ нашСм случаС —это Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Запуск jar-Ρ„Π°ΠΉΠ»ΠΎΠ² выполняСтся Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ java, Π½ΠΎ слСдом Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ -jar: ΠΎΠ½ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ запускаСтся Jar-Ρ„Π°ΠΉΠ», Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ β€” ΠΏΡƒΡ‚ΡŒ ΠΊ jar-Ρ„Π°ΠΉΠ»Ρƒ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅:

java -jar box-machine.jar
Π’Ρ‹Π²ΠΎΠ΄:

Box have size 5.5495235762547965
Box have size 9.695870044165662
Box have size 2.3408385788129227
Box have size 7.2790741216674135
Box have size 2.3620854470160513

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java Π±Π΅Π· IDE: ΠΎΠ±Π·ΠΎΡ€ систСм сборок

НСсмотря Π½Π° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ простоту использования ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‡Π΅Π½ΡŒ слоТно ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ срСдниС ΠΈ большиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹. Π­Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ ошибками Ρ€Π°Π·Π½ΠΎΠΉ стСпСни. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΅ΡΡ‚ΡŒ систСмы сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Ρ€Π°Π·Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡Π°ΡŽΡ‚ процСсс Ρ€Π°Π±ΠΎΡ‚Ρ‹. НСсколькими ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ эта систСма ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ любой слоТности, Π° ΠΎΠ±ΠΈΠ»ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², созданных Π·Π° врСмя сущСствования Ρ‚Π°ΠΊΠΈΡ… систСм, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒ практичСски ΠΎΡ‚ любой Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ.

Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Java?

Π‘Π°ΠΌΡ‹Π΅ извСстныС систСмы сборки Π½Π° Java β€” это Ant, Maven ΠΈ Gradle. Π‘Ρ€Π΅Π΄ΠΈ Π½Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΈΠ»ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ: каТдая ΠΈΠ· Π½ΠΈΡ… создана для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Ant

Ant β€” инструмСнт сборки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ сцСнарий, описанный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ xml-Ρ„Π°ΠΉΠ»Π°. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° xml-Ρ„Π°ΠΉΠ»Π°:
<?xml version="1.0"?>
<project name="ΠΈΠΌΡΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π°" default="ΡΡ†Π΅Π½Π°Ρ€ΠΈΠΉΠŸΠΎΠ£ΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ">
    <target name="имяБцСнария">
  //  ДСйствия сцСнария
        <echo>Hello, World!</echo>
    </target>
  //  Π’Ρ‚ΠΎΡ€ΠΎΠΉ сцСнарий
  //  И Ρ‚Π΄
</project>
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Ρ„Π°ΠΉΠ» build.xml со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ содСрТимым:
<?xml version="1.0"?>
<project name="BoxMachine" default="test">
   <target name="test">
       <echo>First build in Ant!</echo>
   </target>
</project>
Π’ этом ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ant:

D:\Java>D:\Temp\ant\bin\ant
Buildfile: D:\Java\build.xml

test:
     [echo] First build in Ant!

BUILD SUCCESSFUL
Total time: 0 seconds
Π’ Ρ‚Π΅Π³Π΅ <target> ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ задания, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сборкой ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмой. Π£ Ant Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 150 доступных ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 5:
  • mkdir β€” созданиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ
  • delete β€” ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΉ
  • javac β€” компиляция Java–кода
  • java β€” запуск скомпилированного ΠΊΠΎΠ΄Π°
Π’Π°ΠΊ выглядит простой сцСнарий компиляции, сборки ΠΈΠ»ΠΈ очистки:
<?xml version="1.0"?>
<project name="BoxMachine" default="compile">
   <target name="compile">
       <mkdir dir="result/classes"/>
       <javac destdir="result/classes" includeantruntime="false">
           <src path="src"/>
       </javac>
   </target>
   <target name="run" depends="compile">
       <java classname="BoxMachine" classpath="result/classes"/>
   </target>
   <target name="clean">
       <delete dir="result"/>
   </target>
</project>
Π’ сцСнарии описано Ρ‚Ρ€ΠΈ дСйствия β€” compile, ,code>run ΠΈ clean. compile создаСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ result, Π² Π½Π΅ΠΉ classes, Π·Π°Ρ‚Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ javac ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ классы Π² ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. run запускаСт скомпилированныС классы ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ java. clean удаляСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ result. Если Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ant Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², запустится дСйствиС compile. Если Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ дСйствиС, Π΅Π³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅.

D:\Java>D:/Temp/ant/bin/ant compile
Buildfile: D:\Java\build.xml

compile:
    [mkdir] Created dir: D:\Java\result\classes
    [javac] Compiling 2 source files to D:\Java\result\classes

BUILD SUCCESSFUL
Total time: 1 second

Maven

Maven ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ сборкС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ скорСС описываСт свой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ant, Π³Π΄Π΅ сборка β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий. Maven популярСн срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² благодаря простому ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ зависимостями ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ со всСми срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Maven ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΎΠΉ структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ Π² Java - 3ΠŸΡ€Π°Π²ΠΈΠ»Π° сборки, зависимости ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅ описываСтся Π² Ρ„Π°ΠΉΠ»Π΅ pom.xml. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ½ находится Π² Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈ запускС Maven провСряСт структуру ΠΈ синтаксис Ρ„Π°ΠΉΠ»Π°, прСдупрСТдая ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. Π’ Π³Π»Π°Π²Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ рядом с ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ bin ΠΈ src создаСм Ρ„Π°ΠΉΠ» pom.xml, Π²Π½ΡƒΡ‚Ρ€ΡŒ добавляСм:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>ru.javarush.testmaven</groupId>
  <artifactId>testMavenWithoutIde</artifactId>
  <version>1.0.0</version>

  <build>
     <defaultGoal>compile</defaultGoal>
     <sourceDirectory>src</sourceDirectory>
     <outputDirectory>bin</outputDirectory>
     <finalName>${project.artifactId}-${project.version}</finalName>
  </build>
</project>
Π”Π°Π»Π΅Π΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ mvn:

D:\Java>mvn
[INFO] Scanning for projects...
[INFO]
[INFO] -------------< ru.javarush.testmaven:testMavenWithoutIde >--------------
[INFO] Building testMavenWithoutIde 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ testMavenWithoutIde ---
[WARNING] Using platform encoding (Cp1251 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\Java\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ testMavenWithoutIde ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1251, i.e. build is platform dependent!
[INFO] Compiling 2 source files to D:\Java\bin
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.521 s
[INFO] Finished at: 2019-06-25T20:18:05+03:00
[INFO] ------------------------------------------------------------------------
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅ bin Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΠ° src, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находятся скомпилированныС классы. Π’ pom.xml Π² Ρ‚Π΅Π³Π΅ build ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ†Π΅Π»ΡŒ сборки β€” компиляция, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π° ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° компиляции, Π° Ρ‚Π°ΠΊΠΆΠ΅ имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π£ Maven Π΅ΡΡ‚ΡŒ мноТСство Ρ†Π΅Π»Π΅ΠΉ сборки ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для запуска тСстирования, создания Jar-Ρ„Π°ΠΉΠ»ΠΎΠ², сборки дистрибутивов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡.

Gradle

Π­Ρ‚ΠΎ самая молодая систСма сборки, которая основываСтся Π½Π° Ant ΠΈ Maven. Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ β€” Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° Π±Π°Π·Π΅ ацикличСского Π³Ρ€Π°Ρ„Π° для опрСдСлСния порядка выполнСния Π·Π°Π΄Π°Ρ‡. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных Π·Π°Π΄Π°Ρ‡Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… сборках. ΠŸΡ€ΠΈ сборкС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Gradle Ρ‚Π°ΠΊΠΆΠ΅ рСкомСндуСтся ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ структуры ΠΏΠ°ΠΏΠΎΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Maven. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ρ„Π°ΠΉΠ» для сборки Π² Gradle ΠΎΠ½ называСтся build.gradle ΠΈ выглядит Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС, Ρ‡Π΅ΠΌ Ρƒ Maven. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ для Π½Π°ΡˆΠΈΡ… классов:
apply plugin: 'java'
apply plugin: 'application'

sourceSets {
   main {
       java {
           srcDirs 'src'
       }
   }
}
sourceSets.main.output.classesDir = file("bin")

mainClassName = "src.BoxMachine"

defaultTasks 'compileJava', 'run'
Π’ Ρ„Π°ΠΉΠ»Π΅ происходит ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² исходного ΠΊΠΎΠ΄Π° (Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Maven), дирСктория Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сборки, имя Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ класса, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π—Π° запуск сборки ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π° gradle Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Π³Π΄Π΅ Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ» build.gradle:

d:\Java>D:\Temp\gradle\bin\gradle

Welcome to Gradle 5.4.1!

Here are the highlights of this release:
 - Run builds with JDK12
 - New API for Incremental Tasks
 - Updates to native projects, including Swift 5 support

For more details see https://docs.gradle.org/5.4.1/release-notes.html

Starting a Gradle Daemon (subsequent builds will be faster)

> Task :help

Welcome to Gradle 5.4.1.

To run a build, run gradle <task> ...

To see a list of available tasks, run gradle tasks

To see a list of command-line options, run gradle --help

To see more detail about a task, run gradle help --task <task>

For troubleshooting, visit https://help.gradle.org

BUILD SUCCESSFUL in 52s
1 actionable task: 1 executed

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, ΡƒΠΌΠ΅Π½ΠΈΠ΅ компиляции ΠΈ сборки ΠΊΠΎΠ΄Π° Π±Π΅Π· IDE каТСтся бСсполСзным. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡƒΡ‡ΠΈΡ‚ΡŒΡΡ с ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹ΠΌΠΈ строками ΠΈ Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ ΡƒΡŽΡ‚Π½Π°Ρ IDEΡˆΠ΅Ρ‡ΠΊΠ° с ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ, Π°Π²Ρ‚ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ всСго Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ (соврСмСнныС IDE Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ IQ Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚) ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с популярными систСмами. Однако ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±Π΅Π· срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага этого процСсса β€” суровая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ Π½Π°Π²Ρ‹ΠΊ сэкономит Π½Π΅ΠΌΠ°Π»ΠΎ Π½Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠ»Π΅Ρ‚ΠΎΠΊ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²Π°ΠΌ ΠΈ вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠžΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π² IDE, ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² написании ΠΊΠΎΠ΄Π° ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ основы ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° Java Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ здСсь β€” Π½Π° JavaRush. ΠŸΠΎΡ€Π° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ :)
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (21)
  • популярныС
  • Π½ΠΎΠ²Ρ‹Π΅
  • старыС
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
Anonymous #2053422
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 16
24 января, 10:21
Π•ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» nm.java Π² ΠΏΠ°ΠΏΠΊΠ΅ nm Π’ Ρ„Π°ΠΉΠ»Π΅ Π½Π΅Ρ‚ строки package. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ javac nm.java ΠΈ запускаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ java nm Π€Π°ΠΉΠ» класса ΠΏΡ€ΠΈ этом появляСтся Π² ΠΏΠ°ΠΏΠΊΠ΅ nm рядом с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π”ΠΎΠ±Π°Π²Π»ΡΡŽ Π² Ρ„Π°ΠΉΠ» строку package nm;. ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ javac nm.java ΠŸΡ‹Ρ‚Π°ΡŽΡΡŒ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· java nm ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ: Error: Could not find or load main class nm. Caused by: java.lang.NoClassDefFoundError: nm (wrong name: nm/nm) ΠŸΠΎΡ‡Π΅ΠΌΡƒ, Ρ‡Ρ‘Ρ€Ρ‚ Π΅Π³ΠΎ Π΄Π΅Ρ€ΠΈ?
ОлСг ΠšΠΎΡ€ΠΎΠ»Π΅Π²
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 3
Expert
31 января, 15:13
А класс nm, Ρ‚Π°ΠΊ ΠΈ имСнуСтся с малСнькой Π±ΡƒΠΊΠ²Ρ‹?
Anton-V-K Software Developer
27 ноября 2022, 00:10
ΠšΡΡ‚Π°Ρ‚ΠΈ , CHCP 1251 Ρ‚ΠΎΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒΡΡ с "ΠΈΠ΅Ρ€ΠΎΠ³Π»ΠΈΡ„Π°ΠΌΠΈ" вмСсто ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹ :)
Maria-Lipina
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 1
14 октября 2022, 05:40
Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΏΠΎΠ½ΡΡ‚ΡŒ самыС основы, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ сборкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρƒ мСня постоянно ломалось). Но! МнС ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΈΡ‡ΠΊΡƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ 100500 статСй ΠΊΠ°ΠΊ с JavaRush Ρ‚Π°ΠΊ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΡ… сайтов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ инструкции ΠΏΠΎ компиляции ΠΈ сборкС Ρ‡Π΅Ρ€Π΅Π· Maven (Ant ΠΈ Gradle Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»Π°). ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ замСчания: 1) Π—Π΄Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠ° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ java -classpath ./bin BoxMachine. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ выполняСтся ΠΏΠ°ΠΊΠ΅Ρ‚ : java -classpath ./bin src.BoxMachine 2) НС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ³ΠΎ прямого указания, Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ (Ρ‚ΠΎΡ‚ ΠΆΠ΅ NotePad, я Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΄Π΅Π»Π°Π»Π° Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ nano) - Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΈ понятно, Π½ΠΎ всС-Ρ‚Π°ΠΊΠΈ. Для ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹ тСкста ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρƒ Π°Π²Ρ‚ΠΎΡ€Π° Π±ΡƒΠ΄Π΅Ρ‚ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ совСт. 3) Π’ ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄? Для ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. Π Π°Π· Π·Π°Π»Π΅Π·Π°Π΅ΠΌ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠΎ ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠ°ΠΌ, Ρ‚ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ ΠΈ Π½Π΅Ρ‚? Jetbrains Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈ это ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ интСрСсно 4) ! Для выполнСния инструкций Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ чСсноку, Π±Π΅Π· IDE) Ant, Maven, Gradle Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. НС Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ хотя Π±Ρ‹ прямого указания Π½Π° этот Ρ„Π°ΠΊΡ‚ ΠΈ ссылки Π½Π° ΡΡ‚Π°Ρ‚ΡŒΡŽ с инструкциСй установки 5) pom.xml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒΡ - Π½Π΅ΠΏΠΎΠ»Π½Ρ‹ΠΉ. Π’ΠΎΡ‚ совсСм. МнС ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ properties ΠΈ Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ скомпилировался, Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π² jar Π½Π΅ собрался.
Psiho5at Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ ΠΏΠΎ ΠΆΠΈΠ·Π½ΠΈ Π² Π‘Ρ‚Π΅ΡΠ½ΡΡŽΡΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
5 сСнтября 2022, 05:25
Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток, ΠΊΠΎΠΌΡ€Π°Π΄Ρ‹! Π’ΠΎΠ·Π½ΠΈΠΊ вопрос Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ происходит Ρ‡Π΅Ρ€Π΅Π· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: "java hello.java", Когда ΠΏΠΈΡˆΡƒ "java hello", ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ сообщСниС "Error: Could not find or load main class hello" "Caused by: java.lang.ClassNotFoundException: hello"
Максим
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 23
15 сСнтября 2022, 11:46
1. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ производится с использованиСм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ "javac hello.java" Π£ вас просто ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Ρ„Π°ΠΉΠ» Π½Π΅ скомпилировался Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄
Psiho5at Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ ΠΏΠΎ ΠΆΠΈΠ·Π½ΠΈ Π² Π‘Ρ‚Π΅ΡΠ½ΡΡŽΡΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ
16 сСнтября 2022, 10:27
Бпасибо Π·Π° ΠΎΡ‚Π²Π΅Ρ‚))), Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» Ρ‡Π΅Ρ€Π΅Π· "javac hello.java". Π”Π°Π»Π΅Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ запуск это "java hello". Π£ мСня ΠΊΠ°ΠΊ-Ρ‚ΠΎ странно получаСтся, запуск получаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС "java hello.java".
bighugΠ΅mistΠ΅r Android Developer
1 дСкабря 2023, 08:45
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ классы Π² Java, ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ с большой Π±ΡƒΠΊΠ²Ρ‹.
Ksenia
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 13
2 дСкабря 2023, 00:02
ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:
>java Hello
ΠΏΠ΅Ρ€Π΅Π΄ этим Π΅Ρ‘ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ(ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ», содСрТащий Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .class)
>javac Hello.java
ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° написания: CamelCase, Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ .java ΠΈ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ public класс. Ну ΠΈ напослСдок, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΠ°ΠΏΠΊΠ° с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π”Πž компиляции ΠΈ ΠŸΠžΠ‘Π›Π•(ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° вашСй ошибки ClassNotFoundException Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»Π°ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ скомпилировали Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· javac ΠΈ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Π΅Π³ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ(Π±Π΅Π· компиляции), Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ вашСм написании, Π½ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ "java hello", Ρ‚.ΠΊ. Π½Π° дискС Π½Π΅ создаСтся class-Ρ„Π°ΠΉΠ»)
Anonymous #2372013
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 26
27 фСвраля 2021, 13:21
ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ поТалуйста ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Java - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ Linux.
АлСксСй
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 37
5 августа 2021, 06:16
это происходит Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² виндовс
Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 29
4 июня 2020, 13:35
Π‘Ρ‚Π°Ρ‚ΡŒ я Ρ‚Π°ΠΊ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ, Π° Π½Π° манифСстах пошла каша-малаша
Π‘ΠΌΠΎΠ»
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 19
11 апрСля 2020, 07:25
Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Ρƒ мСня Π½Π΅ сработало. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, ΠΏΠ°Ρ€Ρƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΡƒΠΏΡƒΡ‰Π΅Π½ΠΎ Π² описании. Π’ΠΎΡ‚ здСсь Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚. https://habr.com/ru/post/125210/
barracuda
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 41
Expert
19 сСнтября 2020, 15:54
Бсылка отличнаая, спасибо! ΠΌΠ½Π΅ каТСтся, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρƒ Π½ΠΈΡ… Π½Π΅ сработало, Ρ‚.ΠΊ. Ρƒ Π½ΠΈΡ… Ρ‚ΡƒΡ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Ρ„Π°ΠΉΠ»Π°Ρ… с классами Box ΠΈ BoxMessage ΡƒΠΊΠ°Π·Π°Π½ΠΎ package src; ΠΏΠ΅Ρ€Π²ΠΎΠΉ строчкой, поэтому ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ javac -d bin ./src/* всС Ρ„Π°ΠΉΠ»Ρ‹ .class ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡƒ: BoxMachine/bin/src/Box.class И Ρ‚ΠΎΠ³Π΄Π° Π²ΠΎΡ‚ эта ΠΊΠΎΠΌΠ°Π½Π΄Π° запуска прилоТСния: java -classpath ./bin BoxMachine просто Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΏΠ°ΠΏΠΊΠ΅ /bin, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π² ./bin/src ---- Ссли ΡƒΠ±Ρ€Π°Ρ‚ΡŒ package src; Π² исходниках, Ρ‚ΠΎ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.
N N N
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 41
12 октября 2020, 06:03
πŸ‘
barracuda
Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ 41
Expert
12 октября 2020, 07:13
πŸ‘€
25 октября 2019, 18:21
Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь. Вопрос ΠΏΠΎ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ utf8. 1) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ страницу "chcp 65001" 2) ΠŸΠΈΡˆΡƒ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ utf-8 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс public class WordI { public static void main (String[] args) { System.out.println("Π±ΡƒΠΊΠ²Π° И"); } } 3) компиляция происходит с ошибкой. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ компилятор всё Ρ€Π°Π²Π½ΠΎ пытаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π΅(cp1251). ΠŸΡ€ΠΈ этом Ρƒ Π½Π΅Π³ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π±ΡƒΠΊΠ²ΠΎΠΉ "И". >javac WordI.java WordI.java:3: error: unmappable character for encoding Cp1251 System.out.println("Π±ΡƒΠΊΠ²Π° ?"); ^ 1 error 4) Если ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: javac -encoding UTF-8 WordI.java , Ρ‚ΠΎ компиляция ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ русскиС символы просто Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ: Π²Ρ‹Π·ΠΎΠ² >java WordI Π΄Π°Ρ‘Ρ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ " "(ΠΏΡ€ΠΎΠ±Π΅Π»). ΠŸΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ компилятор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ utf-8 Π±Ρ‹Π» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π΅Π½?
25 октября 2019, 18:34
Π•ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: 1)Ρ„Π°ΠΉΠ» остаётся Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ utf-8 2)кодовая страница выставляСтся ΠΊΠ°ΠΊ >chcp 1251 3)компиляция осущСствляСтся с Ρ„Π»Π°Π³ΠΎΠΌ: javac -encoding UTF-8 WordI.java 4)Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ: >java WordI Π±ΡƒΠΊΠ²Π° И ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ страницС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ utf-8 (>chcp 65001) ΠΈ компиляции с Ρ„Π»Π°Π³ΠΎΠΌ >javac -encoding UTF-8 WordI.java кирилличСскиС символы Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‚ΡΡ?
ДСнис Enterprise Java Developer
18 июля 2019, 19:11
ΠžΡ‡Π΅Π½ΡŒ интСрСсная ΡΡ‚Π°Ρ‚ΡŒΡ, ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π΅Π΄Π°Π²Π½ΠΎ интСрСсовался систСмой сборки Maven ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Ρƒ ΠΌΠΎΠ΅Π³ΠΎ "инструмСнта" появилась пСрвая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ JDBC, Π° МавСн ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ это ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎ git ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Best Practices Π² составлСнии ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ gitignore ΠΈ Ρ‚.Π΄.
23 июля 2019, 08:59
Π½Π° ΡŽΡ‚ΡƒΠ± ΠΊΠ°Π½Π°Π»Π΅ alishev Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ java EE ΠΎΡ‡Π΅Π½ΡŒ доступно ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ maven
ДСнис Enterprise Java Developer
23 июля 2019, 09:45
Бпасибо, ознакомлюсь Π½Π° досугС.