vim开发javafx(网上没一个靠谱的)
我是用linux的,纯粹vim党。关于linux的javafx配置,网上全是(下jdk8啊,配置环境变量啊。。。你忽悠谁呢,现在linux主流的环境全是jdk11,换java环境几乎是冒险,而且java11是下一个长期支持版本,面对java11是迟早的事情,而且你忽悠谁呢,不需要最新开发环境你不会apt吗?网上开发就没一个人会apt?另外谁想知道ide怎么搞的。。。。。。
吐槽完毕,接下来给大家介绍我配置vim的javafx开发环境,在此之前,我默认你安装了YCM插件(当然不安装也没事啊)
首先当然是愉快的apt(pacman也行,yum滚)
sudo apt install openjfx
当然这个时候你输入
javac xxx.java
命令行全是报错,当然YCM插件下的vim也是全红。。。由于我环境现在已经配置完成了,那个全红的壮观也不能给你们看了
这是由于javafx被悲壮的踢出了java11的默认的生产环境——惨。当然你还是可以运行的
官方示例
javac --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX.java
这是新特性
我们下来的生产环境位置位于/usr/share/openjfx/lib下面
比如你已经构建了这样一个java文件
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Line;
import javafx.stage.Stage;
// at Ww W.y iIB A i .CO M
public class Main extends Application {
@Override
public void start(Stage stage) {
VBox box = new VBox();
final Scene scene = new Scene(box,300, 250);
scene.setFill(null);
Line line = new Line();
line.setStartX(0.0f);
line.setStartY(0.0f);
line.setEndX(100.0f);
line.setEndY(100.0f);
box.getChildren().add(line);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
//Main.java
接下来这样运行
javac --module-path /usr/share/openjfx/lib/ --add-modules javafx.controls Main.java
java --module-path /usr/share/openjfx/lib/ --add-modules javafx.controls Main
然后你会发现,编译成功了,大功告成!!!
NONONO
vim得配置一下
"别在意细节,这个函数是开发用的特殊运行函数
func! Lncurses()
exec 'w'
if &filetype == 'cpp'
"exec "w"
exec "!g++ % -o %< -lncurses"
exec "terminal ./%<"
exec "set nonumber"
elseif (&filetype == 'html' || &filetype == 'xhtml')
exec "!google-chrome-stable % &"
"您只需要看下面一行
elseif (&filetype == 'java')
exec "vs"
exec "terminal javac --module-path /usr/share/openjfx/lib/ --add-modules javafx.controls % && java --module-path /usr/share/openjfx/lib/ --add-modules javafx.controls %<"
endif
endfunc
map <F6> :call Lncurses()<CR>
"这样按F6就可以编译运行了
结束了?还没有呢,YCM的红色还灿烂呢!
这时候就得配置CLASSPATH了。
众所周知由于linux包管理缘故,需要配置环境变量很少,一般默认环境变量就足够了,网上教程一般环境变量叫你配置在root下面——作死是吧
在$HOME下面有这么几个文件——.profile,.bash_profile,.bashrc.(用zsh的小伙伴后两个应该是.zsh_profile,zishrc)。往这里加同志们
export CLASSPATH=$CLASSPATH:/usr/share/openjfx/lib/*
在以上三个隐藏文件(没有就新建)最后一行加上这个命令
解释一下,export是往终端输出环境变量,所谓环境变量就是
echo $CLASSPATH
后出来的东西,你可以理解为别名,java就认识这个名字,然后往里面找class。冒号是同时指定两个位置,我冒号前面加了一个$CLASSPATH,这是原本加载前的环境变量,再加上新的环境变量,这样就是两个叠加了。
怕死的话可以先在终端输入
export CLASSPATH=$CLASSPATH:/usr/share/openjfx/lib/*
试试有没有影响,有影响就关掉一个重开就是
然后在source一下
比如
source ~/.bashrc
source ~/.profile
之后就完全可以直接用了
附带一句,这个时候直接javac Main.java是能编译通过的,但运行时候就要runtime运行不了,所以嘛我vim里的函数还是得要地(有人有办法解决另说)