web-dev-qa-db-fra.com

Comment installer JavaFx dans Ubuntu 12.04?

Je télécharge JavaFx de ici . Je l'ai placé dans mon répertoire personnel (anto) sous le nom javafx. Puis j'ai fait quelque chose comme ça:

vi ~/.bashrc

et ajouté les lignes suivantes:

javaFx_home=/anto/javafx/rt/lib/jfxrt.jar
export PATH=$PATH:$javaFx_home

Mais après avoir fourni le classpath, j'ai essayé de courir:

groovy MyProgram

(qui dépend du classpath JavaFx).

Mais cela me jette une erreur. Où je me suis trompé?

3
Ant's

Automatiquement: (via le référentiel ppa webupd8 helper)

Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java7-installer

Remarque: Vous pouvez remplacer Oracle-Java7-installer par Oracle-Java8-installer ou Oracle-Java9-installer. Vous devrez accepter le contrat de licence utilisateur final Oracle avant l'installation (ceci n'est pas requis avec OpenJDK, donc si un back-port OpenJDK est disponible pour la version 12.04, veuillez mettre à jour cet article! :)

Manuellement:

2

Vous pouvez essayer de régler le paramètre CLASSPATH au lieu de PATH. Java essaie de charger ses classes à partir des emplacements référencés par CLASSPATH.

  • Commencez par vérifier votre chemin d'accès aux classes avec echo $CLASSPATH. Comme PATH, les entrées de CLASSPATH sont séparées par : (deux points). La présence d'une entrée . sous CLASSPATH signifie que Java peut toujours charger des classes à partir du répertoire en cours.
  • Pour ajouter une bibliothèque .jar à votre CLASSPATH, vous devez ouvrir le fichier ~/.profile et y ajouter export CLASSPATH=$CLASSPATH:path to .jar. Comme dans votre cas, cela devrait être

    javaFx_home=/home/anto/javafx/rt/lib/jfxrt.jar
    export CLASSPATH=$CLASSPATH:$javaFx_home

    si . n'était pas présent dans votre précédente entrée CLASSPATH, puis modifiez la dernière ligne comme suit:
    export CLASSPATH=$CLASSPATH:$javaFx_home:.
1
Samik

Voici ce que j'ai trouvé jusqu'à présent.

J'ai téléchargé le SDK JavaFX 1.2 et 2.2. Ils ont supprimé certains fichiers de JavaFX SDK.

Pour 1.2

virpara@Ascension:~$ tree -L 2 '/home/virpara/Desktop/javafx-sdk1.2' 
/home/virpara/Desktop/javafx-sdk1.2
|-- bin
|   |-- javafx
|   |-- javafxc
|   |-- javafxdoc
|   `-- javafxpackager
|-- COPYRIGHT.html
|-- docs
|   |-- api
|   |-- emulator.html
|   |-- index.html
|   |-- javafxc.html
|   |-- javafxdoc.html
|   |-- javafx.html
|   |-- javafxpackager.html
|   `-- manpage.css
|-- emulator
|   `-- bin
|-- invoice.properties
|-- lib
|   |-- desktop
|   |-- javafx-runtime.properties
|   |-- mobile
|   `-- shared
|-- LICENSE.txt
|-- profiles
|   |-- desktop.properties
|   `-- mobile.properties
|-- README.html
|-- samples
|   |-- DisplayShelf
|   |-- DisplayShelfMobile
|   |-- DragAndDrop
|   |-- index.html
|   |-- InterestingPhotos
|   |-- LocalSearch
|   |-- MediaBox
|   |-- PathAnimation
|   |-- PhotoEffects
|   |-- PhotoFlip
|   |-- shared
|   `-- SpringAnimation
|-- servicetag
|   `-- registration.jar
|-- src.Zip
|-- THIRDPARTYLICENSEREADME.txt
`-- timestamp

23 directories, 23 files

Pour 2.2

virpara@Ascension:~$ tree -L 2 '/home/virpara/Desktop/javafx-sdk2.2.0-beta' 
/home/virpara/Desktop/javafx-sdk2.2.0-beta
|-- bin
|   `-- javafxpackager
|-- COPYRIGHT.html
|-- docs
|   `-- api
|-- lib
|   |-- ant-javafx.jar
|   |-- javafx-doclet.jar
|   `-- javafx-mx.jar
|-- README.html
|-- rt
|   |-- COPYRIGHT.html
|   |-- lib
|   |-- README.html
|   `-- THIRDPARTYLICENSEREADME.txt
`-- THIRDPARTYLICENSEREADME.txt

6 directories, 10 files

Il n'y a qu'un seul script javafxpackager dans javafx-sdk2.2.0-beta/bin (les scripts javafx, javafxc, javafxdoc sont supprimés). Cela signifie que si vous exportez javafx-sdk2.2.0-beta/bin dans votre variable PATH et tentez d'exécuter javafx --version dans le terminal, il ne trouve pas javafx car il n’existe pas d’exécutable nommé javafx.

Eh bien, je n'ai aucune expérience de JavaFX mais ils ont probablement supprimé trois autres scripts car ils ne seraient pas nécessaires et peut-être que javafxpackager ferait la chose ou Java suffirait pour cela.

Vous avez essayé d'inclure le chemin d'accès complet à la variable jfxrt.jar à la variable PATH.

cela ne fonctionnera pas car il ne peut pas passer automatiquement au paramètre -cp. Donc, vous devez donner le chemin complet à jfxrt.jar comme -cp /anto/javafx/rt/lib/jfxrt.jar

Java -cp /anto/javafx/rt/lib/jfxrt.jar MyProgram.Java

Je sais que ce n'est pas une solution.

0
Rahul Virpara

J'ai le même problème, et @ Samik answer fonctionne pour moi!

Dans mon ~.bashrc, comme @samik, dites:

export JAVAFX_HOME=/usr/lib/jvm/javafx-sdk2.2.0-beta/rt/lib/jfxrt.jar
export CLASSPATH=$CLASSPATH:$JAVAFX_HOME:.

Maintenant un peu source .profile et nous essayons avec un exemple

touch JavaFxText.Java

Je coupe/copie cet exemple de code dans le fichier:

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.effect.*;
import javafx.scene.Paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

/**
 * Simple demonstration of JavaFX text support.
 * 
 * @author Dustin
 */
public class JavaFxText extends Application
{
   /**
    * Start demonstration of JavaFX text capabilities.
    * 
    * @param stage Stage for JavaFX application.
    * @throws Exception Exception in JavaFX application.
    */
   @Override
   public void start(final Stage stage) throws Exception
   {
      stage.setTitle("Simplistic Example of JavaFX 2.0 Text Capabilities");
      final Group rootGroup = new Group();
      final Scene scene =
         new Scene(rootGroup, 800, 400, Color.BEIGE);

      final Text text1 = new Text(25, 25, "(2007) JavaFX based on F3");
      text1.setFill(Color.CHOCOLATE);
      text1.setFont(Font.font(Java.awt.Font.SERIF, 25));
      rootGroup.getChildren().add(text1);

      final Text text2 = new Text(25, 50, "(2010) JavaFX Script Deprecated");
      text2.setFill(Color.DARKBLUE);
      text2.setFont(Font.font(Java.awt.Font.SANS_SERIF, 30));
      rootGroup.getChildren().add(text2);

      final Text text3 = new Text(25, 75, "(2011) JavaFX to be Open Sourced!");
      text3.setFill(Color.TEAL);
      text3.setFont(Font.font(Java.awt.Font.MONOSPACED, 35));
      rootGroup.getChildren().add(text3);

      final Text text4 = new Text(25, 125, "(2011) JavaFX to be Standardized");
      text4.setFill(Color.CRIMSON);
      text4.setFont(Font.font(Java.awt.Font.DIALOG, 40));
      final Effect glow = new Glow(1.0);
      text4.setEffect(glow);
      rootGroup.getChildren().add(text4);

      final Text text5 = new Text(25, 175, "(Now) Time for JavaFX 2.0!");
      text5.setFill(Color.DARKVIOLET);
      text5.setFont(Font.font(Java.awt.Font.SERIF, FontWeight.EXTRA_BOLD, 45));
      final Light.Distant light = new Light.Distant();
      light.setAzimuth(-135.0);
      final Lighting lighting = new Lighting();
      lighting.setLight(light);
      lighting.setSurfaceScale(9.0);
      text5.setEffect(lighting);
      rootGroup.getChildren().add(text5);

      final Text text6 = new Text(25, 225, "JavaFX News at JavaOne!");
      text6.setFill(Color.DARKGREEN);
      text6.setBlendMode(BlendMode.COLOR_BURN);
      text6.setFont(Font.font(Java.awt.Font.DIALOG_INPUT, FontWeight.THIN, 45));
      final Reflection reflection = new Reflection();
      reflection.setFraction(1.0);
      text6.setEffect(reflection);
      rootGroup.getChildren().add(text6);

      stage.setScene(scene);
      stage.show();
   }

   /**
    * Main JavaFX application launching method.
    * 
    * @param arguments Command-line arguments: none expected.
    */
   public static void main(final String[] arguments)
   {
      Application.launch(arguments);
   }
}

Et ça court

javac JavaFxText.Java
java JavaFxText

Donnez la prime à @samik, il le mérite !!

0
reyman64