如何在Ubuntu 12.04中安装JavaFx?
我从这里下载JavaFx。 我将它放在我的主目录( anto
)中,名称为javafx
。 然后我做了这样的事情:
vi ~/.bashrc
并添加以下行:
javaFx_home=/anto/javafx/rt/lib/jfxrt.jar export PATH=$PATH:$javaFx_home
但在提供类路径后,我尝试运行:
groovy MyProgram
(这取决于JavaFx类路径)。
但这让我错了。 哪里出错了?
自动:(通过webupd8 helper ppa存储库)
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer
注意:您可以使用
oracle-java8-installer
或oracle-java9-installer
。 您需要在安装之前接受Oracle最终用户许可协议(这不是OpenJDK所必需的,因此如果OpenJDK后端端口是针对12.04发布的,请更新此post!:)
手动:
您可以尝试设置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的经验,但可能他们已经删除了其他三个脚本,因为它不需要,也许javafxpackager
可以做到这一点,或者java
就足够了。
您已尝试将jfxrt.jar
完整路径jfxrt.jar
到PATH
变量中。
它不起作用,因为它无法自动传递给-cp
参数。 因此,您必须提供jfxrt.jar
完整路径as -cp /anto/javafx/rt/lib/jfxrt.jar
java -cp /anto/javafx/rt/lib/jfxrt.jar MyProgram.java
我知道这不是一个解决方案。
我有同样的问题, @ samik的答案对我有用 !
进入我的〜.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赏金,他应得的!
请继续逐行考虑..
-
下载适用于Linux的JavaFX SDK shell脚本。 大多数情况下,JavaFX SDK shell脚本可能会下载到:/ home /“your_user_directory”/ Downloads
-
通过执行以下操作更改为root用户:
-
键入/复制/粘贴:sudo -s
-
键入/复制/粘贴:cd / home /“your_user_directory”/ Downloads
-
输入/复制/粘贴:cp -r javafx_sdk-1_3-linux-i586.sh / usr / local
-
键入/复制/粘贴:cd / usr / local
-
以root用户身份,通过运行以下命令使JavaFX shell脚本可执行:
-
键入/复制/粘贴:sudo chmod a + x javafx_sdk-1_3-linux-i586.sh
-
然后通过运行以下任一方法执行shell脚本:
键入/复制/粘贴:sudo ./javafx_sdk-1_3-linux-i586.sh或类型/复制/粘贴:sudo sh javafx_sdk-1_3-linux-i586.sh
-
编辑/ etc / profile中的Ubuntu Linux系统路径变量,使用文本编辑器作为root,例如nano或gedit。 键入/复制/粘贴:sudo nano / etc / profile或Type / Copy / Paste:sudo gedit / etc / profile
-
将以下行添加到/ etc / profile系统范围路径:PATH = $ PATH:$ JAVAFX_HOME:/usr/local/javafx-sdk1.3/bin export JAVAFX_HOME export PATH
-
保存文件并退出
-
通过运行以下命令重新加载/ etc / profile文件:键入/复制/粘贴:。 / etc / profile文件
-
在Ubuntu Linux中打开一个终端,发出以下命令:Type / Copy / Paste:javafx -version
此命令让您知道系统上安装了哪个版本的javafx您应该收到类似于以下内容的消息:javafx 1.3.1_b101
-
还运行以下命令:键入/复制/粘贴:javafxc -version此命令将允许您从终端编译javafx程序您应该收到一条消息,指出:javafxc 1.3.1_b101
-
现在重新启动您的Ubuntu Linux系统,并且应该完全安装JavaFX以供使用。