starałem się wywołać custom url
z mojego programu Java, stąd kiedyś coś takiego:Rejestrowanie i przy użyciu protokołu zwyczaj java.net.URL
URL myURL;
try {
myURL = new URL("CustomURI:");
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
} catch (Exception e) {
e.printStackTrace();
}
Dostałem poniższy wyjątek:
java.net.MalformedURLException: nieznany protokół: CustomURI na java.net.URL (Unknown Source) na java.net.URL (Unknown Source) na java.net.URL (Unknown Source) w... com.demo.TestDemo.main (TestDemo.jav a: 14)
Gdybym wywołać URI
z przeglądarki to działa zgodnie z oczekiwaniami, ale gdy próbuję wywołać go z Java Program
następnie otrzymuję powyższy wyjątek.
EDIT:
Poniżej przedstawiono kroki próbowałem (brakuje mi czegoś na pewno, proszę dać mi znać o tym):
Krok 1: Dodawanie niestandardowego URI w java.protocol.handler.pkgs
Krok 2: Wyzwalanie Custom URI z URL
Kod:
public class CustomURI {
public static void main(String[] args) {
try {
add("CustomURI:");
URL uri = new URL("CustomURI:");
URLConnection uc = uri.openConnection();
uc.connect();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void add(String handlerPackage){
final String key = "java.protocol.handler.pkgs";
String newValue = handlerPackage;
if (System.getProperty(key) != null)
{
final String previousValue = System.getProperty(key);
newValue += "|" + previousValue;
}
System.setProperty(key, newValue);
System.out.println(System.getProperty("java.protocol.handler.pkgs"));
}
}
Kiedy uruchomić ten kod, otrzymuję CustomURI:
drukowane w mojej konsoli (z metody Add), ale następnie otrzymuję ten wyjątek, gdy URL
jest zainicjowany z CustomURI:
jako konstruktor:
Exception in thread "main" java.lang.StackOverflowError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at java.net.URL.getURLStreamHandler(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at sun.misc.URLClassPath$FileLoader.getResource(Unknown Source)
at sun.misc.URLClassPath.getResource(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.net.URL.getURLStreamHandler(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
Proszę doradzić, jak to działa.
Co jest _as expected_ –
'Co oznacza Expected' że zwyczaj URL uruchamia aplikację Zasadniczo ten niestandardowy adres URL jest registr y wpis, który utworzyłem do uruchamiania aplikacji desktopowych. – user182944
Jestem prawie pewien, że będziesz musiał napisać własny "URLStreamHandlerFactory" do obsługi tego protokołu. –