рдЖрдкрдХреЛ рдХрднреА рднреА рдЕрдкрдиреЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реБрдП рдЙрд╕ рдкрд░ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдг рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдирдХ JDK7 рдкреИрдХреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг
javafxpackager рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдУрд░реЗрдХрд▓ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╣реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рднреА рдмрдирд╛ рд╕рдХрддреА рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдкрд░ рдХреНрдпрд╛ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╕реНрд░реЛрддреЛрдВ рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рдЬрд╛рд░ рдХреЗ рд╕рд╛рде рджреЛрдиреЛрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрдм рдЬрд╛рд░ рдХреЛ JRE рдХреЗ рд╕рд╛рде рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЕрднреА рддрдХ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрдорд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ JRE рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ HelloWorld рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ: рдмрд╕ src рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдХреЗ рд╕рд╛рде helloworld рд╕рдмрдбрд╛рдпрд░реЗрдХреНрдЯ рдФрд░ HelloWorld.java:
package helloworld; public class HelloWorld { public static void main (String[] args) { System.out.println ("Hello, world!"); } }
рд░реВрдЯ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдПрдВрдЯреА'рдУрд╡реА рдмрд┐рд▓реНрдб.xml рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рд╕-рдлрд╛рдЗрд▓ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
<?xml version="1.0" encoding="UTF-8"?> <project name="Generic" default="compile" basedir="."> <target name="compile"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes" executable="${java.sdk}/bin/javac"/> </target> </project>
рддреЛ, рдЪрд▓реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЛ:
$ ant compile
Javafxpackager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рдЬрд╛рд░ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдо рдХрд░реЗрдВрдЧреЗ (рдбрд┐рд╕реНрдЯрд░реНрдм рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж):
$ javafxpackager -createjar -srcdir build/classes -outfile dist/HelloWorld.jar -appclass helloworld.HelloWorld
рдпрджрд┐ рдЖрдк рдирд┐рд░реНрдорд┐рдд рдЬрд╛рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдирд┐рд░реНрдорд┐рдд рдорд╛рдирдХ рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИ:
$ unzip -l dist/HelloWorld.jar Archive: dist/HelloWorld.jar Length Date Time Name --------- ---------- ----- ---- 0 2013-04-29 15:50 META-INF/ 158 2013-04-29 15:50 META-INF/MANIFEST.MF 0 2013-04-29 15:50 helloworld/ 353 2013-04-29 15:50 helloworld/HelloWorld.class 0 2013-04-29 15:50 com/ 0 2013-04-29 15:50 com/javafx/ 0 2013-04-29 15:50 com/javafx/main/ 2671 2013-04-29 15:50 com/javafx/main/Main$1.class 5633 2013-04-29 15:50 com/javafx/main/NoJavaFXFallback.class 19218 2013-04-29 15:50 com/javafx/main/Main.class 1747 2013-04-29 15:50 com/javafx/main/Main$2.class --------- ------- 29780 11 files
рдЗрд╕реЗ рдЕрдирдкреИрдХ рдХрд░рдиреЗ рдФрд░ MANIFEST.MF рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рднреА рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рдорд╛рд╡реЗрд╢рди рд╡рд┐рдзрд┐ рднреА рдорд╛рдирдХ рдПрдХ рд╕реЗ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╣реИ (рдпрд╣ JavaFX рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ):
Manifest-Version: 1.0 JavaFX-Version: 2.2 JavaFX-Application-Class: helloworld.HelloWorld Created-By: JavaFX Packager Main-Class: com/javafx/main/Main
рдЕрдЧрд▓рд╛, рдЪрд▓реЛ рдЦреБрдж рдкреИрдХреЗрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рддреИрдирд╛рдд рдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде jnlp рдФрд░ html рдмрдирд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк -native рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ: рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдм рдФрд░ рдЖрд░рдкреАрдПрдо (рдХреНрд░рдорд╢рдГ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП dpkg рдпрд╛ rpmbuild рдпреБрдХреНрдд), exe рдФрд░ msi рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рд╕реАрдорд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЗрдиреЛ рд╕реЗрдЯрдЕрдк рдПрдХреНрд╕рдИ рдФрд░ рдПрдордПрд╕рдЖрдИ рдХреЗ рд▓рд┐рдП рд╡рд╛рдИрдПрдХреНрд╕ рдЯреВрд▓рд╕реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рдФрд░ рдореИрдХрдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдбреАрдЬреАрдПрдо рдХреЗ рд╕рд╛рде рдПрдХ рдРрдкред рдЖрдЗрдП рд╣рдо рддреБрд░рдВрдд рджреЗрд╢реА рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдВ (рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрд╛рд░ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ):
$ javafxpackager -deploy -v -srcdir dist -outdir dist -outfile HelloWorld -appclass helloworld.HelloWorld -native all
рдЗрд╕рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд▓реЗрдЧреАред рдЕрдм рд╣рдорд╛рд░реА рдбрд┐рд╕реНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдмрдВрдбрд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдП: 2 рдмрдВрдбрд▓ (рд╡рд┐рднрд┐рдиреНрди OS рдХреЗ рд▓рд┐рдП - рдЕрд▓рдЧ-рдЕрд▓рдЧ) рдФрд░ 1, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЕрдирдкреИрдХреНрдб рдкреИрдХреЗрдЬ рд╣реИ: рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдмрд╛рдЗрдирд░реА рд╕реНрдерд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реБрдП рд╣рдореЗрдВ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:
рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛!
рдпрд╣ рдХреЛрдб JRE рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреИрдХ рд╣реИред
рдФрд░ рдкреИрдХреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП?
2 рддрд░реАрдХреЗ рд╣реИрдВ: рдЖрдк рдПрдХ рд╣реА javafxpackager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдВрдЯреА-рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, exec'aред рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЬреНрдпрд╛рджрд╛ рдардВрдбрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдВрдЯреА- jafafx.jar рдкреИрдХреЗрдЬ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреА рдЪреАрдВрдЯреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рд╕рдм рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ?
- рдПрдВрдЯреА-рдЬрд╛рд╡рдлреИрдХреНрд╕ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ: рдкреНрд░реЛрдЬреЗрдХреНрдЯ xml рдЯреНрд░реА рдХреЗ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
xmlns: fx = "javafx: com.sun.javafx.tools.ant"
, рдФрд░ рдЙрд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЬреЛрдбрд╝
<taskdef resource="com/sun/javafx/tools/ant/antlib.xml" uri="javafx:com.sun.javafx.tools.ant" classpath=".${path.separator}${java.sdk}/lib/ant-javafx.jar"/>
, рдЬрдмрдХрд┐ рдЖрдкрдиреЗ JDK рдХреА рдЬрдбрд╝ рдореЗрдВ рдЪрд░ $ {java.sdk} рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред - рдЬрд╛рд░:
<fx:jar destfile="dist/HelloWorld.jar"> <fx:application name="HelloWorld" mainClass="helloworld.HelloWorld" /> <fx:fileset dir="build/classes" /> <fx:manifest> <fx:attribute name="Implementation-Vendor" value="meAndMyCompany"/> <fx:attribute name="Implementation-Title" value="HelloWorld"/> <fx:attribute name="Implementation-Version" value="1.0"/> </fx:manifest> </fx:jar>
- рдирд┐рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ:
<fx:deploy width="100" height="100" nativeBundles="all" outdir="dist" outfile="HelloWorld"> <fx:application name="HelloWorld" mainClass="helloworld.HelloWorld"/> <fx:resources> <fx:fileset dir="dist" includes="*.jar"> </fx:resources> <fx:info title="HelloWorld" vendor="myAndMyCompany"/> </fx:deploy> </pre>
docs.oracle.com/javafx/2/deployment/javafxpackager001.htm - javafxpackager рдкреНрд░рд▓реЗрдЦрди
docs.oracle.com/javafx/2/deployment/javafx_ant_task_reference001.htm - рдПрдВрдЯрд╛рд╕ рдЯрд╛рд╕реНрдХ рдкреНрд░рд▓реЗрдЦрди
docs.oracle.com/javafx/2/deployment/self-contain-packaging.htm - рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА
UPD: рд╡реЗ рд╕рднреА рдЬреЛ рдпрд╣рд╛рдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВ, JDK рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред