рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рдЕрдм рдХреЛрдИ рднреА рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдбреЗрд╡рд▓рдкрд░ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрд╕рд╣рдЬ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рдирд╣реАрдВ рд╣реИред
рдЪреАрдВрдЯреА рдФрд░ рдорд╛рд╡реЗрди рдХреЗ рдХрд╛рдо рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдкрд╛рдпрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВрдиреЗ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЛ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддрд╛рдХрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдорджрдж рдХреА рддрд▓рд╛рд╢ рди рдХрд░реЗрдВред

рд╕рд░рд▓ рд╕реЗ ...


рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рджреЛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдиреЗ рдХреЗ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ: src рдФрд░ binред рдкрд╣рд▓реЗ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рдореЗрдВ рд╕рдВрдХрд▓рди рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИред рдЗрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдкреИрдХреЗрдЬ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдЧреАред

рд╕рд┐рдВрдЧрд▓ рдлрд╛рдЗрд▓


рдЖрдк рдЗрд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
HelloWorld.java рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣реА рд▓реЗрдВред
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } } 

рд╣рдо рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИред
 javac HelloWorld.java 
рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ HelloWorld.class рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдХрд▓рд┐рдд рд╣реИред рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП
 java -classpath . HelloWorld 

рд╕реНрд░реЛрдд рд╕реЗ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ


рдЕрдм рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рдеред HelloWorld рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ рджреЛ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ src рдФрд░ binред
рд╕рдВрдХрд▓рди
 javac -d bin src/HelloWorld.java 
рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдмрд┐рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
 java -classpath ./bin HelloWorld 

рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


рдФрд░ рдлрд┐рд░, рдЕрдЪрд╛рдирдХ, рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд┐рд░реНрдл рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕рдВрдХреБрд▓ рдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдХреБрдЫ рд▓реЗрдЦреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЛрдореЗрди рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдбреЛрдореЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЛрдореЗрди рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рд╛рдЗрдЯ рдкрд░ рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ru.habrabr.mylogin)ред рдпрд╣ рдЕрджреНрд╡рд┐рддреАрдп рд╣реЛрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдХрд╛ рдирд╛рдо рд▓реЛрдЕрд░рдХреЗрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВред рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд╛рд░рдг рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВред

рд╣рдордиреЗ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЛ com.qwertovsky.helloworld рдирд╛рдордХ рдкреИрдХреЗрдЬ рдореЗрдВ рд░рдЦрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ
 package com.qwertovsky.helloworld; 
Src рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдВ рдмрдирд╛рдПрдВ рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗ: src / com / qwertovsky / helloworld / HelloWorld.javaред
рд╕рдВрдХрд▓рди
 javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java 
рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд┐рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ src рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред
  HelloWorld '---bin ' '---com ' '---qwertovsky ' '---helloworld ' '---HelloWorld.class '---src '---com '---qwertovsky '---helloworld '---HelloWorld.java 

рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
 java -classpath ./bin com.qwertovsky.helloworld.HelloWorld 

рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдХрдИ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрджрд▓реЗрдВред

HelloWorld.java
 package com.qwertovsky.helloworld; public class HelloWorld { public static void main(String[] args) { int a=2; int b=3; Calculator calc=new Calculator(); System.out.println("Hello World!"); System.out.println(a+"+"+b+"="+calc.sum(a,b)); } } 

Calculator.java
 package com.qwertovsky.helloworld; import com.qwertovsky.helloworld.operation.Adder; public class Calculator { public int sum(int... a) { Adder adder=new Adder(); for(int i:a) { adder.add(i); } return adder.getSum(); } } 

Adder.java
 package com.qwertovsky.helloworld.operation; public class Adder { private int sum; public Adder() { sum=0; } public Adder(int a) { this.sum=a; } public void add(int b) { sum+=b; } public int getSum() { return sum; } } 

рд╕рдВрдХрд▓рди
 javac -d bin src/com/qwertovsky/helloworld/HelloWorld.java src\com\qwertovsky\helloworld\HelloWorld.java:9: cannot find symbol symbol : class Calculator location: class com.qwertovsky.helloworld.HelloWorld Calculator calc=new Calculator(); ^ src\com\qwertovsky\helloworld\HelloWorld.java:9: cannot find symbol symbol : class Calculator location: class com.qwertovsky.helloworld.HelloWorld Calculator calc=new Calculator(); ^ 2 errors 

рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХрд▓рди рдХреЛ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╡рд░реНрдЧ)ред рд╕рдВрдХрд▓рдХ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрдХрд▓рдХ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╕рдВрдХрд▓рди
 javac -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java 

рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
 java -classpath ./bin com.qwertovsky.helloworld.HelloWorld Hello Word 2+3=5 

рдпрджрд┐ рдкрд░рд┐рдгрд╛рдо рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ


рдбрд┐рдмрдЧрд░ рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП jdb рд╣реИред
рдкрд╣рд▓реЗ, -g рд╕реНрд╡рд┐рдЪ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд░реЗрдВ рддрд╛рдХрд┐ рдбрд┐рдмрдЧрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛред
 javac -g -sourcepath ./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java 

рдбрд┐рдмрдЧрд░ рдЪрд▓рд╛рдПрдВ
 jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld Initializing jdb ... > 

рдбрд┐рдмрдЧрд░ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЖрдВрддрд░рд┐рдХ рдЯрд░реНрдорд┐рдирд▓ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рд╣реЗрд▓реНрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╡рд░реНрдЧ рдореЗрдВ рд▓рд╛рдЗрди 9 рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреНрд╡рд╛рдЗрдВрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ
 > stop at com.qwertovsky.helloworld.Calculator:9 Deferring breakpoint com.qwertovsky.helloworld.Calculator:9. It will be set after the class is loaded. 

рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рджреМрдбрд╝реЗрдВред
 > run run com.qwertovsky.helloworld.HelloWorld Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable > VM Started: Set deferred breakpoint com.qwertovsky.helloworld.Calculator:9 Hello World! Breakpoint hit: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Adder adder=new Adder(); 

рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЙрдиреНрдореБрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рдХрд░реНрд╕рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
 main[1] list 5 public class Calculator 6 { 7 public int sum(int... a) 8 { 9 => Adder adder=new Adder(); 10 for(int i:a) 11 { 12 adder.add(i); 13 } 14 return adder.getSum(); 

рд╣рдо рд╕реАрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ рдХреНрдпрд╛ рд╣реИред
 main[1] print a a = instance of int[2] (id=340) main[1] dump a a = { 2, 3 } main[1] stop at com.qwertovsky.helloworld.operation.Adder:19 Deferring breakpoint com.qwertovsky.helloworld.operation.Adder:19. It will be set after the class is loaded. 

рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
 main[1] cont > Set deferred breakpoint com.qwertovsky.helloworld.operation.Adder:19 Breakpoint hit: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 sum+=b; main[1] list 15 } 16 17 public void add(int b) 18 { 19 => sum+=b; 20 } 21 22 public int getSum() 23 { 24 return sum; main[1] print sum sum = 0 main[1] print b b = 2 

рдЪрд▓реЛ рд╡рд░реНрддрдорд╛рди рдкрдВрдХреНрддрд┐ рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпреЛрдЧ 2 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреЗ рд▓рдЧрд╛ред
 main[1] step > Step completed: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 } main[1] print sum sum = 2 

рд╣рдо рдПрдбрдбрд░ рдХреНрд▓рд╛рд╕ рд╕реЗ рдХреИрд▓реНрдХреНрдпреБрд▓реЗрдЯрд░ рдХреНрд▓рд╛рд╕ рдХреА рддрд░рдл рдмрдврд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред
 main[1] step up > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) 

рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рдбрд┐рд▓реАрдЯ рдХрд░реЗрдВ
 main[1] clear com.qwertovsky.helloworld.operation.Adder:19 Removed: breakpoint com.qwertovsky.helloworld.operation.Adder:19 main[1] step > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=12 bci=30 12 adder.add(i); 

рдЕрдЧрд▓реЗ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
 main[1] next > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main[1] next > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=14 bci=42 14 return adder.getSum(); 

рд╣рдо рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВред
 main[1] eval adder.getSum() adder.getSum() = 5 main[1] cont > 2+3=5 The application exited 

рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ


рд╣рдо JUnit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
 package com.qwertovsky.helloworld; import static org.junit.Assert.*; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized.Parameters; @RunWith(value=org.junit.runners.Parameterized.class) public class TestCalculator { int expected; int[] arg; @Parameters public static Collection<int[][]> parameters() { return Arrays.asList(new int[][][]{ {{4}, {2, 2}} ,{{-1},{4, -5}} ,{{0},{0,0,0}} ,{{0},{}} }); } public TestCalculator(int[] expected, int[] arg) { this.expected=expected[0]; this.arg=arg; } @Test public void testSum() { Calculator c=new Calculator(); assertEquals(expected,c.sum(arg)); } } 

рд╕рдВрдХрд▓рди
 mkdir test_bin javac -classpath lib/path/junit-4.8.2.jar -sourcepath ./src -d test_bin test/com/qwertovsky/helloworld/TestCalculator.java 

рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреНрд▓рд╛рд╕рдкрд╛рде рдореЗрдВ рдХрдИ рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд╡рд┐рднрд╛рдЬрдХ рдХреЗ рд░реВрдк рдореЗрдВ, ';', рд▓рд┐рдирдХреНрд╕ рдкрд░ - ':' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреЛрдиреЛрдВ рд╡рд┐рднрд╛рдЬрдХ Cygwin рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ';', рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЖрджреЗрд╢ рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
 java -classpath lib/path/junit-4.8.2.jar:./test_bin org.junit.runner.JUnitCore com.qwertovsky.helloworld.TestCalculator JUnit version 4.8.2 .... Time: 0,031 OK (4 tests) 

рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдПрдБ


рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдмрд┐рдд рд╣реБрдЖ рд╣реИ рдФрд░ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдХреИрд▓рдХреНрдпреВрд▓реЗрдЯрд░ рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  HelloWorld '---bin '---src '---com '---qwertovsky '---helloworld '---HelloWorld.java alculator '---bin '---src ' '---com ' '---qwertovsky ' '---calculator ' '---Calculator.java ' '---operation ' '---Adder.java '---test '---com '---qwertovsky '---calculator '---TestCalculator.java 

рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рдирд╛рдо рднреА рдмрджрд▓реЗрдВред HelloWorld.java рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреА рд╣реЛрдЧреА
 import com.qwertovsky.calculator.Calculator; 

рд╣рдо рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╣реИрдВред
 cd Calculator javac -sourcepath src -d bin src/com/qwertovsky/calculator/Calculator.java 

рдЬрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдмрдирд╛рдирд╛
 jar cvf calculator.jar -C bin . added manifest adding: com/(in = 0) (out= 0)(stored 0%) adding: com/qwertovsky/(in = 0) (out= 0)(stored 0%) adding: com/qwertovsky/calculator/(in = 0) (out= 0)(stored 0%) adding: com/qwertovsky/calculator/Calculator.class(in = 497) (out= 373)(deflated 24%) adding: com/qwertovsky/calculator/operation/(in = 0) (out= 0)(stored 0%) adding: com/qwertovsky/calculator/operation/Adder.class(in = 441) (out= 299)(deflated 32%) 

-рд╕реА рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрд┐рди рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред

рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ


рдЖрдк рдЖрд░реНрдХ рдХреЛ рдЬрд╝рд┐рдк рдЕрдирдкреИрдХрд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреМрди рд╕реА рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВред
Javap disassembler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
 javap -c -classpath calculator.jar com.qwertovsky.calculator.Calculator Compiled from "Calculator.java" public class com.qwertovsky.calculator.Calculator extends java.lang.Object{ public com.qwertovsky.calculator.Calculator(); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return public int sum(int[]); Code: 0: new #2; //class com/qwertovsky/calculator/operation/Adder 3: dup 4: invokespecial #3; //Method com/qwertovsky/calculator/operation/Adder."<init>":()V 7: astore_2 8: aload_1 9: astore_3 10: aload_3 11: arraylength 12: istore 4 14: iconst_0 15: istore 5 17: iload 5 19: iload 4 21: if_icmpge 42 24: aload_3 25: iload 5 27: iaload 28: istore 6 30: aload_2 31: iload 6 33: invokevirtual #4; //Method com/qwertovsky/calculator/operation/Adder.add:(I)V 36: iinc 5, 1 39: goto 17 42: aload_2 43: invokevirtual #5; //Method com/qwertovsky/calculator/operation/Adder.getSum:()I 46: ireturn } 

рдпрд╣ рдЙрд╕ рдкрд░рд┐рдгрд╛рдо рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЦрд╛рд▓реА рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдФрд░ рдпреЛрдЧ рд╡рд┐рдзрд┐, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдПрдбрдбрд░ рд╡рд░реНрдЧ рдХреА рдЬреЛрдбрд╝ рд╡рд┐рдзрд┐ рдХреЛ рд▓реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпреЛрдЧ рдкрджреНрдзрддрд┐ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, Adder.getSum () рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
-рд╕реА рд╕реНрд╡рд┐рдЪ рдХреЗ рдмрд┐рдирд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗрд╡рд▓ рдЪрд░ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдЧрд╛ (рдпрджрд┐ рдЖрдк -рдкрд╛рдЗрд▓реЗрдЯрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА)ред
 javap -private -classpath calculator.jar com.qwertovsky.calculator.operation.Adder Compiled from "Adder.java" public class com.qwertovsky.calculator.operation.Adder extends java.lang.Object{ private int sum; public com.qwertovsky.calculator.operation.Adder(); public com.qwertovsky.calculator.operation.Adder(int); public void add(int); public int getSum(); } 

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ


рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдХреА рдХреНрд▓рд╛рд╕ рдмрджрд▓реЗрдВред
 package com.qwertovsky.calculator; import com.qwertovsky.calculator.operation.Adder; /** * ,    * @author Qwertovsky * */ public class Calculator { /** *    * @param a   * @return  */ public int sum(int... a) { Adder adder=new Adder(); for(int i:a) { adder.add(i); } return adder.getSum(); } } 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рд▓реЗрдЦрди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
 mkdir doc javadoc -d doc -charset utf-8 -sourcepath src -author -subpackages com.qwertovsky.calculator 

рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ
рдЫрд╡рд┐

рдЖрдк рдЬрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдбрд┐рдЬрд┐рдЯрд▓ рд░реВрдк рд╕реЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреБрдВрдЬреАрдЯреВрд▓ рдФрд░ рдЬрд░реНрд╕рд┐рдЧреНрдирд░ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрдПрдВрдЧреЗред
рдПрдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред
 keytool -genkey -keyalg rsa -keysize 2048 -alias qwertokey -keystore path/to/qwerto.keystore Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: Valery Qwertovsky What is the name of your organizational unit? [Unknown]: Qwertovsky What is the name of your organization? [Unknown]: Qwertovsky What is the name of your City or Locality? [Unknown]: Tver What is the name of your State or Province? [Unknown]: Tverskaya obl. What is the two-letter country code for this unit? [Unknown]: RU Is CN=Valery Qwertovsky, OU=Qwertovsky, O=Qwertovsky, L=Tver, ST=Tverskaya obl., C=RU correct? [no]: y Enter key password for <qwertokey> (RETURN if same as keystore password): Re-enter new password: 

рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдЕрдиреБрд░реЛрдз (CSR) рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
 keytool -certreq -file path/to/qwertokey.crt -alias qwertokey -keystore path/to/qwerto.keystore 

рдкреНрд░рд╛рдкреНрдд рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдорд╛рдгрди рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред рд╣рдореЗрдВ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, qwertokey.cer) рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ
 keytool -import -trustcacerts -keystore path/to/qwert.keystore -alias qwertokey -file path/to/qwertokey.cer 

рдЬрд╛рд░ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░реЗрдВ
 jarsigner -keystore path/to/qwerto.keystore calculator.jar qwertokey 

Qwertokey.cer рдлрд╝рд╛рдЗрд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╕рдВрдЧреНрд░рд╣ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
 jarsigner -verify -verbose -certs -keystore path/to/qwerto.keystore calculator.jar 

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ


рдПрдХ HelloWorld рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдВрдХрд▓рди
 cd HelloWorld javac -sourcepath src -d bin -classpath path/to/calculator.jar src/com/qwertovsky/helloworld/HelloWorld.java 

рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
 java -classpath bin:path/to/calculator.jar com.qwertovsky.helloworld.HelloWorld 

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛


рдпрд╣ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛


 cd HelloWorld echo main-class: com.qwertovsky.helloworld.HelloWorld>manifest.mf echo class-path: lib/calculator.jar >>manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar -cmf manifest.mf helloworld.jar -C bin . 

рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВред
рд▓рд╛рдЗрди рдореЗрдВ
 main-class: com.qwertovsky.helloworld.HelloWorld 

рдЕрдВрдд рдореЗрдВ рдХреЛрдИ рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рджреВрд╕рд░реА рд╕реВрдХреНрд╖реНрдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди [3] рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЙрд╕реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░рдХрдЯ рддреГрддреАрдп-рдкрдХреНрд╖ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкреНрд░рдХрдЯ рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╕реЗ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрдм рддрдХ рдХрд┐ рдЕрдВрдд рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рди рд╣реЛред
рдПрдХ рдФрд░ рдмрд┐рдВрджреБ: рдкреНрд░рдХрдЯ рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмреАрдЪ рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рддреНрд░реБрдЯрд┐ "java.io.IOException: рдЕрдорд╛рдиреНрдп рдкреНрд░рдХрдЯрди рдкреНрд░рд╛рд░реВрдк" рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрдХреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдореБрдЦреНрдп-рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкрдВрдХреНрддрд┐ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛


 cd HelloWorld echo class-path: lib/calculator.jar >manifest.mf mkdir lib cp path/to/calculator.jar lib/calculator.jar jar -cmef manifest.mf com.qwertovsky.helloworld.HelloWorld helloworld.jar -C bin . 

рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдо рдореБрдЦреНрдп-рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

рддреАрд╕рд░рд╛ рддрд░реАрдХрд╛


 cd HelloWorld mkdir lib cd lib jar -xvf path/to/calculator.jar com/ created: com/ created: com/qwertovsky/ created: com/qwertovsky/calculator/ inflated: com/qwertovsky/calculator/Calculator.class created: com/qwertovsky/calculator/operation/ inflated: com/qwertovsky/calculator/operation/Adder.class cd .. cp -r bin/* lib/ jar -cef com.qwertovsky.helloworld.HelloWorld helloworld.jar -C lib . rm -r lib 

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЬрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рдирд╛


рдХреИрд▓рдХреБрд▓реЗрдЯрд░.рдЬрд░ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди helloworld.jar рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкрд╣рд▓реЗ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЙрд╕рдХреЗ рдЖрдЧреЗ рдХреИрд▓рдХреБрд▓реЗрдЯрд░.рдЬрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝реЛрд▓реНрдбрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рд╡рд░реНрдЧ-рдкрде рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
 cd Calculator ls ../HelloWorld/lib calculator.jar java -jar ../HelloWorld/helloworld.jar 

рддреАрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
 java -jar ../HelloWorld/helloworld.jar 

JavaEE рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ


рдЗрд╕реА рддрд░рд╣ред рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡рд░ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдореИрдВ JBoss рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рд░реНрд╡рд▓реЗрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
 javac -classpath path/to/jboss/common/lib/jboss-servlet*.jar -d ./classes src/com/qwertovsky/app/servlets/MenuSt.java 

JavaEE рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрдЧреНрд░рд╣ рд╕рдВрд░рдЪрдирд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
  my.ear `---META-INF | `---manifest.mf `---lib | `---mylib.jar `---my.war | `---META-INF | | `---manifest.mf | `---WEB-INF | | `---lib | | | `---myweblib.jar | | `---classes | | | `---com | | | `---... | | `---web.xml | `---index.html | `---< - (, )> `---myejb.jar 

рдкреНрд░рддреНрдпреЗрдХ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзреЛрдЦрд╛ рдкрддреНрд░ рд╣реЛрдЧрд╛ред рдпреЗ рдХреМрд╢рд▓ рдПрдВрдЯ-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЕрд░реНрде рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди "рдЖрдк рдХрд┐рд╕ рдЖрдИрдбреАрдИ рдХреЛ рдЕрдзрд┐рдХ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ?"

рдФрд░ рдкрдврд╝реЗрдВ


1. рдЗрд▓рд┐рдпрдЯ рд░рд╕реНрдЯреА рд╣реЗрд░реЛрд▓реНрдбред "рдпреВрдирд┐рдХреНрд╕ рдФрд░ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдХреНрд▓рд╛рд╕рдкрд╛рде рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢"
2. рдЗрд▓рд┐рдпрдЯ рд░рд╕реНрдЯреА рд╣реЗрд░реЛрд▓реНрдбред "рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреНрд▓рд╛рд╕рдкрд╛рде рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢"
3. рдпреВрдЬреАрди рдореИрдЯреНрдпреБрд╕реНрдХрд┐рди рдЙрд░реНрдл тАЛтАЛрд╕реНрдХрд┐рдкреАред "рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо"
4. рдкрд╛рда: JAR рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо
5. рдмреНрд░рд╛рдпрди рдЧреЛрдПрдЯреНрдЬрд╝ред "рдЬрд╛рд╡рд╛ рдереНрдпреЛрд░реА рдФрд░ рдкреНрд░реИрдХреНрдЯрд┐рд╕: рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?"
6. рдПрд╡рдЧреЗрдиреА рдореИрдЯреНрдпреБрд╕реНрдХрд┐рди рдЙрд░реНрдл тАЛтАЛрд╕реНрдХрд┐рдкреАред "рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ javadoc рдЯреИрдЧ рдмрдирд╛рдирд╛"
7. рдЬрд╛рд╡рд╛ рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдмрдирд╛рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
8. рд╕рди рдЬрд╛рд╡рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░
9.рдЬрд╛рд╡реЗрдХ - рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕рдВрдХрд▓рдХ
10. рдЬрд╛рд╡рд╛ - рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪрд░
11. jdb - рдЬрд╛рд╡рд╛ рдбреАрдмрдЧрд░
12. javap - рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░
13. javadoc - рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдкреНрд░рд▓реЗрдЦрди рдЬреЗрдирд░реЗрдЯрд░
14. jarsigner - JAR рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг
15. рдЬрд╛рд░ - рдЬрд╛рд╡рд╛ рдЖрд░реНрдХрд╛рдЗрд╡ рдЯреВрд▓
16. рдХреАрдЯреВрд▓ - рдХреБрдВрдЬреА рдФрд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг

Source: https://habr.com/ru/post/In125210/


All Articles