Registrieren und Verwenden eines benutzerdefinierten java.net.URL-Protokolls
Ich habe versucht, ein @ aufzurufcustom url
aus meinem Java-Programm, daher habe ich so etwas verwendet:
URL myURL;
try {
myURL = new URL("CustomURI:");
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
} catch (Exception e) {
e.printStackTrace();
}
Ich habe die folgende Ausnahme:
java.net.MalformedURLException: unbekanntes Protokoll: CustomURI bei java.net.URL. (unbekannte Quelle) bei java.net.URL. (unbekannte Quelle) bei java.net.URL. (unbekannte Quelle) bei com.demo.TestDemo .main (TestDemo.java:14)
Wenn ich das @ auslöURI
von einem Browser funktioniert es dann wie erwartet, aber wenn ich versuche, es aus dem @ aufzurufJava Program
dann bekomme ich die obige Ausnahme.
BEARBEITEN
Nachstehend sind die Schritte aufgeführt, die ich versucht habe (mir fehlt auf jeden Fall etwas, lassen Sie es mich bitte wissen):
Schritt 1: Hinzufügen des benutzerdefinierten URI injava.protocol.handler.pkgs
Schritt 2: Auslösen des benutzerdefinierten URI über URL
Code
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"));
}
}
Wenn ich diesen Code ausführe, erhalte ich dasCustomURI:
in meiner Konsole gedruckt (von der Add-Methode), aber dann bekomme ich diese Ausnahme, wenn dieURL
wird mit @ initialisieCustomURI:
als 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)
Bitte Ratschläge, wie dies funktioniert.