OK, to ugryzł mnie też.
Zbudowałem runnable słoik z oczywistego wpisu
SplashScreen-Image: MyGraphic.jpg
i działa jak to miało.
Od Eclipse, określając VM arg jako
-splash:MyGraphic.jpg
ma takiego szczęścia
SplashScreen.getSplashScreen() zwraca wartość null.
Powodem tego jest nieumeblowana implementacja SplashScreen.getSplashScreen() w JDK (przynajmniej 1.6). Myślę. Trudno powiedzieć, nie wchodząc w to, co robi natywny kod. Ale tutaj jest ta metoda z java.awt.SplashScreen.Nie jestem pewien, czy to się nazywa, ale studia to nie zapewni mi zasadniczego pojęcia, że muszę dostać tej pracy w Eclipse:
public synchronized URL getImageURL() throws IllegalStateException {
checkVisible();
if (imageURL == null) {
try {
String fileName = _getImageFileName(splashPtr);
String jarName = _getImageJarName(splashPtr);
if (fileName != null) {
if (jarName != null) {
imageURL = new URL("jar:"+(new File(jarName).toURL().toString())+"!/"+fileName);
} else {
imageURL = new File(fileName).toURL();
}
}
}
catch(java.net.MalformedURLException e) {
// we'll just return null in this case
}
}
return imageURL;
}
pamiętać, że w przypadku pliku (tj wiersza polecenia zamiast słoik uruchom) nie robi getResource(), aby uzyskać adres URL, ale otwiera plik w stosunku do CWD. Ponieważ konfiguracje Eclipse uruchamiają się domyślnie z katalogu głównego projektu, odpowiedzią jest określenie ścieżki jako ścieżki względnej, a nie oczekiwanie na wyszukiwanie w klasie classpath.
Dlatego, ponieważ buduję z maven, mój obraz znajduje się w src/main/resources/MyGraphic.jpg. Określając to jako parametr wiersza poleceń: tj
-splash:src/main/resources/MyGraphic.jpg
pozwala mu pracować w Eclipse (lub, jak sądzę, każdy wiersz poleceń)
Nie jestem pewien, dlaczego tak jest, ponieważ metoda jest getImageURL NIE wywoływane przez getSplashScreen(), ale działa.
Dla mnie jest to rodzaj martwego mózgu ze strony Słońca/Wyroczni. Mogli łatwo wykonać wyszukiwanie ścieżki klasy z czymś podobnym do imageURL = getResource (nazwa pliku), ale nie zrobili tego.
Krótka odpowiedź brzmi, że składnia wiersza poleceń ekranu powitalnego odnosi się do nazwy pliku w stosunku do bieżącej pozycji roboczej, a nie do ścieżki klasy.
Czy próbowałeś _VM Arguments_ w _Run Configuration_? – trashgod
Tak, próbowałem faktycznie przekazać argumenty z tego miejsca. Wygląda na to, że problem polega na tym, że argument -splash: image opiera się na pliku znajdującym się w tym samym katalogu i próbuję dołączyć obraz do pliku Jar. – will824
Przepraszam, źle odczytałem. Możesz również wypróbować ten [narzędzie] (http://sites.google.com/site/drjohnbmatthews/manifesto), aby zweryfikować atrybut "SplashScreen-Image" _in situ_. – trashgod