2015-03-16 3 views
2

Я пытался создать .app для Mac с использованием Oracle appbundler. Я создал образец кода javaFX с помощью только кнопки, отображаемой на сцене. Ниже приведен мой основной класс.Bundle java app для mac distribution

Main.java

package app; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.stage.Stage; 


public class Main extends Application { 

    private void init(Stage primaryStage) throws Exception { 
     Button root = new Button("Hello world!"); 
     Scene scene = new Scene(root,150,50); 
     primaryStage.setScene(scene); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     try { 
      init(primaryStage); 
      primaryStage.show(); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Когда я бегу это от затмения он работает. Таким образом, я создал скрипт Ant для связывания приложения:

build.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project name="builder" default="build-app" basedir="."> 

    <property name="src" value="src" /> 
    <property name="build" value="build" /> 
    <property name="lib" value="lib" /> 

    <!-- Target init --> 
    <target name="init" description="generate build folder"> 
     <delete dir="${build}" /> 
     <mkdir dir="${build}" /> 
    </target> 


    <!-- Build app --> 
    <target name="build-app" depends="init"> 
     <echo>Building files</echo> 
     <javac destdir="${build}" includeantruntime="true"> 
      <src path="${src}/app" /> 
     </javac> 
    </target> 

    <!-- Build app --> 
    <target name="gen-jar" depends="build-app"> 
     <jar destfile="${lib}/app.jar" basedir="${build}/app"/> 
    </target> 


    <!-- BUNDLE APP --> 
    <target name="bundle-sample" depends="gen-jar"> 
     <taskdef name="bundleapp" 
      classname="com.oracle.appbundler.AppBundlerTask" 
      classpath="lib/appbundler-1.0.jar" /> 

     <bundleapp outputdirectory="." 
      name="sample" 
      displayname="sample" 
      identifier="sample" 
      mainclassname="app.Main"> 

      <!-- jdk directory --> 
      <runtime dir="/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home"/> 

      <classpath file="lib/app.jar" /> 
     </bundleapp> 
    </target> 

</project> 

теперь я могу успешно построить муравей скрипт, запустив:

ant bundle-sample 

Хотя, когда я запустить приложение, которое я получите следующую ошибку:

open sample.app 
LSOpenURLsWithRole() failed with error -10810 for the file sample.app 

Кто-нибудь знает, что случилось с build.xml?

ответ

2

Поскольку вы используете Eclipse, я бы посоветовал вам использовать плагин e (fx) clipse, а затем следовать этому руководству. Это сработало для меня.

http://code.makery.ch/library/javafx-8-tutorial/part7/

удачи Майкл