從java9開始能夠經過jar 命令能夠讓一個jar包包含多個jdk版本的源碼。在其MANIFEST.MF文件中須要包含下面這個配置。java
Multi-Release: true
一個普通的jar包目錄以下:oracle
一個包含了<jdk9版本和jdk9編譯的jar包以下:.net
一個包含了<jdk9版本和jdk9以及jdk10編譯的jar包以下:code
它須要先將經過低於jdk9版本的編譯的class文件打包成jar包,而後再將jdk九、jdk10編譯後文件放入到以前編譯的jar包中。htm
對於低於jdk9的應用,它會默認使用root下面的class,而對於jdk九、jdk10等等會用META-INF下對應版本的class。get
經過下面的代碼能夠在不一樣版本的jdk下取到不一樣路徑的文件input
URL r = loader.getResource("foo/baz/resource.txt");