は、私は次のスニペットで、私のJavaFX appllicationにCSSファイルを組み込むようにしようとしている作品:ファイル読み込みのgetResource()が失敗し、ファイルは()
public void loadExternalCSS() {
System.out.println("CLASSPATH: "+System.getProperty("java.class.path"));
try{
skinCSS = getClass().getResource("css/default_skin.css").toExternalForm();
}
catch(Exception e){
System.err.println("Exception: " + e);
e.printStackTrace(System.err);
}
}
利回り、実行時に:
java.lang.NullPointerException
at
robotikosanomologitos.RobotikosAnomologitos.loadExternalCSS(RobotikosAnomologitos.java:529)
at robotikosanomologitos.RobotikosAnomologitos.start(RobotikosAnomologitos.java:491)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
at java.lang.Thread.run(Thread.java:745)
奇妙なことは、この機能上の数行が、私はproperties
ファイルから読み込み、小さな機能を持っているということです。
public void readPropertiesFile() {
Properties props = new Properties();
InputStream is;
try {
File f = new File("properties");
is = new FileInputStream(f);
}
/* etcetera */
}
これは魅力的です。 properties
ファイルはC:\~my_projects_folder~\RobotikosAnomologitos
ソリューションの周りを検索した後、私はgetClass().getResource()
試みは、クラスパス内のリソースを見つけるためにいるのを見、プロジェクトディレクトリのルートにあります。私は毎回クラスパスを印刷しようとしましたが、私は得る: RobotikosAnomologitos\dist\run125323585\RobotikosAnomologitos.jar
これは十分に論理的です。
プログラムを実行しているときにこの一時フォルダを見た後、私はcssフォルダもcssファイルも見つけられません。
しかし、このファイルは実際に私の作業プロジェクトディレクトリのRobotikosAnomologitos\css\default_skin.css
にあります。なんらかの理由で、実行時にクラスパスにそれを作成せず、見つけたときにgetResource()
がnullを返すようにします。
これを含める方法はありますか?
EDIT:私はsrc
パッケージの下css/default_skin.css
をも置かれていることを言及するのを忘れてしまった、とNetBeansのパッケージツリー(src/css/default_skin.css
)に表示されます。
同じように、getClass().getResourceAsStream()
で細かくロードされるsrc/graphics/
の下にあるグラフィックがあります。 cssファイルが見つからない理由についても私には戸惑う。たぶんjar
でコンパイルされないのでしょうか?
クラスパス上のリソースをファイルとして使用しないでください!これは明らかに機能しません。実行時にjarファイルに 'File'はありません。リソースを使用する。 – fge
@DimitrisSfounis getClass()。getResource( "/ css/default_skin.css")。toExternalForm();またはgetClass()。getClassLoader()。getResource( "css/default_skin.css") .toExternalForm(); ' –
@MadhusudanaReddySunnapu両方のダイスを試してみました。 –