Я пытался вызвать custom url
из моей java-программы, поэтому я использовал что-то вроде этого:
URL myURL;
try {
myURL = new URL("CustomURI:");
URLConnection myURLConnection = myURL.openConnection();
myURLConnection.connect();
} catch (Exception e) {
e.printStackTrace();
}
Я получил следующее исключение:
java.net.MalformedURLException: неизвестный протокол: CustomURI на java.net.URL. (Неизвестный источник) на java.net.URL. (Неизвестный источник) на java.net.URL. (Неизвестный источник) на com.demo.TestDemo.main(TestDemo.java:14)
Если я запускаю URI
из браузера, то он работает так, как ожидалось, но если я попытаюсь вызвать его из Java Program
, то я получаю исключение выше.
EDIT:
Ниже приведены шаги, которые я пробовал (я что-то пропустил точно, сообщите мне об этом):
Шаг 1: добавление пользовательского URI в java.protocol.handler.pkgs
Шаг 2. Запуск пользовательского URI из URL
Код:
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"));
}
}
Когда я запускаю этот код, я получаю CustomURI:
, напечатанный на моей консоли (из метода add), но затем я получаю это исключение, когда URL
инициализируется CustomURI:
в качестве конструктора:
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)
Пожалуйста, советую, как это сделать.