here からJavaFxをダウンロードします。名前をanto
としてホームディレクトリ(javafx
)に配置しました。それから私はこのようなことをしました:
vi ~/.bashrc
次の行を追加しました。
javaFx_home=/anto/javafx/rt/lib/jfxrt.jar
export PATH=$PATH:$javaFx_home
しかし、クラスパスを提供した後、実行してみました:
groovy MyProgram
(JavaFxクラスパスに依存します)。
しかし、それは私にエラーをスローします。どこで間違ったの?
自動:(webupd8ヘルパーPPAリポジトリ経由)
Sudo add-apt-repository ppa:webupd8team/Java
Sudo apt-get update
Sudo apt-get install Oracle-Java7-installer
注:
Oracle-Java7-installer
をOracle-Java8-installer
またはOracle-Java9-installer
に置き換えることができます。インストールの前にOracleエンドユーザーライセンス契約に同意する必要があります(OpenJDKでは必要ありません。したがって、OpenJDKバックポートが12.04にリリースされている場合は、この投稿を更新してください!:)
手動で:
CLASSPATH
の代わりにPATH
を設定してみてください。 Javaは、CLASSPATH
によって参照される場所からクラスをロードしようとします。
echo $CLASSPATH
を使用して既存のクラスパスを確認します。 PATH
と同様に、CLASSPATH
のエントリは:
(コロン)で区切られます。 CLASSPATH
の下に.
エントリがあると、Java
は常に現在のディレクトリからクラスをロードできます。.jar
ライブラリをCLASSPATH
に追加するには、ファイル~/.profile
を開き、export CLASSPATH=$CLASSPATH:path to .jar
を追加する必要があります。あなたの場合のようにjavaFx_home=/home/anto/javafx/rt/lib/jfxrt.jar
export CLASSPATH=$CLASSPATH:$javaFx_home
.
が以前のCLASSPATH
エントリになかった場合、最後の行を次のように変更します。export CLASSPATH=$CLASSPATH:$javaFx_home:.
ここに私がこれまでに見つけたものがあります。
JavaFX SDK 1.2
および2.2
をダウンロードしました。彼らはJavaFX SDKからいくつかのファイルを削除しました。
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
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
javafx-sdk2.2.0-beta/bin
にはjavafxpackager
スクリプトのみがあります(javafx, javafxc, javafxdoc
スクリプトは削除されます)javafx-sdk2.2.0-beta/bin
をPATH
変数にエクスポートし、端末でjavafx --version
を実行しようとすると、 javafx
という名前の実行可能ファイルがないため、javafx
が見つかりません。
私はJavaFXの経験がありませんが、おそらく他の3つのスクリプトは削除されたでしょう。おそらく、javafxpackager
がそれを行うか、Java
で十分でしょう。
PATH
変数へのjfxrt.jar
への完全なパスを含めようとしました。
-cp
パラメーターに自動的に渡すことができないため、機能しません。そのため、jfxrt.jar
へのフルパスを-cp /anto/javafx/rt/lib/jfxrt.jar
として指定する必要があります
Java -cp /anto/javafx/rt/lib/jfxrt.jar MyProgram.Java
私はそれが解決策ではないことを知っています。
私は同じ問題を抱えており、@ samik answer works for me!
私の~.bashrc
に、@samikが言うように:
export JAVAFX_HOME=/usr/lib/jvm/javafx-sdk2.2.0-beta/rt/lib/jfxrt.jar
export CLASSPATH=$CLASSPATH:$JAVAFX_HOME:.
さて、少しsource .profile
と例を試してみます
touch JavaFxText.Java
このサンプルコードをファイルにカット/コピーします。
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);
}
}
そして、それは実行中です
javac JavaFxText.Java
java JavaFxText
@samikに賞金を与えて、彼に値する!!