-
Bug
-
Resolution: Unresolved
-
P5
-
None
-
17
-
generic
-
generic
ADDITIONAL SYSTEM INFORMATION :
os: Ubuntu Linux
jtreg 7.6-dev+0n
jdk: temurin 17.0.14 & 17.0.16
A DESCRIPTION OF THE PROBLEM :
URL.openConnection throws StringIndexOutOfBoundsException when using -avm in Jtreg within JDK-17.
Removing -avm flag/using JDK-24/not using jtreg will never trigger it, and openConnection will throw IOException as expected.
When I using latest JDK17(temurin 17.0.16), I get some warnings.
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by com.sun.javatest.regtest.agent.RegressionSecurityManager (file:/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar)
WARNING: Please consider reporting this to the maintainers of com.sun.javatest.regtest.agent.RegressionSecurityManager
WARNING: System::setSecurityManager will be removed in a future release
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Using Jtreg to execute testcase
jtreg -va -ea -avm OpenStream.java
ACTUAL -
--------------------------------------------------
TEST: src/test/java/OpenStream.java
TEST JDK: /home/usrname/.jdks/temurin-17.0.16
ACTION: build -- Passed. Build successful
REASON: Named class compiled on demand
TIME: 0.437 seconds
messages:
command: build OpenStream
reason: Named class compiled on demand
started: Wed Sep 03 15:23:51 CST 2025
Test directory:
compile: OpenStream
finished: Wed Sep 03 15:23:52 CST 2025
elapsed time (seconds): 0.437
ACTION: compile -- Passed. Compilation successful
REASON: .class file out of date or does not exist
TIME: 0.432 seconds
messages:
command: compile /home/usrname/Develop/Project/src/test/java/OpenStream.java
reason: .class file out of date or does not exist
started: Wed Sep 03 15:23:51 CST 2025
Mode: agentvm
Agent id: 1
Process id: 579295
finished: Wed Sep 03 15:23:52 CST 2025
elapsed time (seconds): 0.432
configuration:
Boot Layer (javac runtime environment)
class path: /home/usrname/Develop/jtreg/build/images/jtreg/lib/javatest.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar
patch: java.base /home/usrname/Develop/Project/JTwork/patches/java.base
javac compilation environment
source path: /home/usrname/Develop/Project/src/test/java
class path: /home/usrname/Develop/Project/src/test/java
/home/usrname/Develop/Project/JTwork/classes/src/test/java
rerun:
cd /home/usrname/Develop/Project/JTwork/scratch && \
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
DESKTOP_SESSION=plasma \
DISPLAY=:1 \
HOME=/home/usrname \
LANG=en_US.UTF-8 \
PATH=/bin:/usr/bin:/usr/sbin \
WAYLAND_DISPLAY=wayland-0 \
XDG_CONFIG_DIRS=/home/usrname/.config/kdedefaults:/etc/xdg \
XDG_CURRENT_DESKTOP=KDE \
XDG_DATA_DIRS=/home/usrname/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share \
XDG_MENU_PREFIX=plasma- \
XDG_RUNTIME_DIR=/run/user/1000 \
XDG_SEAT=seat0 \
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 \
XDG_SESSION_CLASS=user \
XDG_SESSION_DESKTOP=KDE \
XDG_SESSION_ID=2 \
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1 \
XDG_SESSION_TYPE=wayland \
XDG_VTNR=1 \
XMODIFIERS=@im=fcitx \
/home/usrname/.jdks/temurin-17.0.16/bin/javac \
-J-ea \
-J-Dtest.vm.opts=-ea \
-J-Dtest.tool.vm.opts=-J-ea \
-J-Dtest.compiler.opts= \
-J-Dtest.java.opts= \
-J-Dtest.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-J-Dcompile.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-J-Dtest.timeout.factor=1.0 \
-J-Dtest.root=/home/usrname/Develop/Project \
-J-Dtest.name=src/test/java/OpenStream.java \
-J-Dtest.verbose=Verbose[p=FULL,f=FULL,e=FULL,t=false,m=false] \
-J-Dtest.file=/home/usrname/Develop/Project/src/test/java/OpenStream.java \
-J-Dtest.src=/home/usrname/Develop/Project/src/test/java \
-J-Dtest.src.path=/home/usrname/Develop/Project/src/test/java \
-J-Dtest.classes=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-J-Dtest.class.path=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-J-Dtest.class.path.prefix=/home/usrname/Develop/Project/JTwork/classes/src/test/java:/home/usrname/Develop/Project/src/test/java \
-d /home/usrname/Develop/Project/JTwork/classes/src/test/java \
-sourcepath /home/usrname/Develop/Project/src/test/java \
-classpath /home/usrname/Develop/Project/src/test/java:/home/usrname/Develop/Project/JTwork/classes/src/test/java /home/usrname/Develop/Project/src/test/java/OpenStream.java
ACTION: main -- Failed. Execution failed: `main' threw exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
REASON: Assumed action based on file name: run main OpenStream
TIME: 0.184 seconds
messages:
command: main OpenStream
reason: Assumed action based on file name: run main OpenStream
started: Wed Sep 03 15:23:52 CST 2025
Mode: agentvm
Agent id: 2
Process id: 579342
finished: Wed Sep 03 15:23:52 CST 2025
elapsed time (seconds): 0.184
configuration:
Boot Layer
class path: /home/usrname/Develop/jtreg/build/images/jtreg/lib/javatest.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/junit-platform-console-standalone-1.11.0.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/testng-7.3.0.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/guice-5.1.0.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/jcommander-1.82.jar
patch: java.base /home/usrname/Develop/Project/JTwork/patches/java.base
Test Layer
class path: /home/usrname/Develop/Project/JTwork/classes/src/test/java
/home/usrname/Develop/Project/src/test/java
rerun:
cd /home/usrname/Develop/Project/JTwork/scratch && \
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
DESKTOP_SESSION=plasma \
DISPLAY=:1 \
HOME=/home/usrname \
LANG=en_US.UTF-8 \
PATH=/bin:/usr/bin:/usr/sbin \
WAYLAND_DISPLAY=wayland-0 \
XDG_CONFIG_DIRS=/home/usrname/.config/kdedefaults:/etc/xdg \
XDG_CURRENT_DESKTOP=KDE \
XDG_DATA_DIRS=/home/usrname/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share \
XDG_MENU_PREFIX=plasma- \
XDG_RUNTIME_DIR=/run/user/1000 \
XDG_SEAT=seat0 \
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 \
XDG_SESSION_CLASS=user \
XDG_SESSION_DESKTOP=KDE \
XDG_SESSION_ID=2 \
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1 \
XDG_SESSION_TYPE=wayland \
XDG_VTNR=1 \
XMODIFIERS=@im=fcitx \
/home/usrname/.jdks/temurin-17.0.16/bin/java \
-Dtest.vm.opts=-ea \
-Dtest.tool.vm.opts=-J-ea \
-Dtest.compiler.opts= \
-Dtest.java.opts= \
-Dtest.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-Dcompile.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-Dtest.timeout.factor=1.0 \
-Dtest.root=/home/usrname/Develop/Project \
-Dtest.name=src/test/java/OpenStream.java \
-Dtest.verbose=Verbose[p=FULL,f=FULL,e=FULL,t=false,m=false] \
-Dtest.file=/home/usrname/Develop/Project/src/test/java/OpenStream.java \
-Dtest.src=/home/usrname/Develop/Project/src/test/java \
-Dtest.src.path=/home/usrname/Develop/Project/src/test/java \
-Dtest.classes=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-Dtest.class.path=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-Dtest.class.path.prefix=/home/usrname/Develop/Project/JTwork/classes/src/test/java:/home/usrname/Develop/Project/src/test/java \
-classpath /home/usrname/Develop/Project/JTwork/classes/src/test/java:/home/usrname/Develop/Project/src/test/java:/home/usrname/Develop/jtreg/build/images/jtreg/lib/javatest.jar:/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar \
OpenStream
stderr:
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by com.sun.javatest.regtest.agent.RegressionSecurityManager (file:/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar)
WARNING: Please consider reporting this to the maintainers of com.sun.javatest.regtest.agent.RegressionSecurityManager
WARNING: System::setSecurityManager will be removed in a future release
STDERR:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1517)
at java.base/java.net.HostPortrange.<init>(HostPortrange.java:75)
at java.base/java.net.URLPermission$Authority.<init>(URLPermission.java:529)
at java.base/java.net.URLPermission.parseURI(URLPermission.java:497)
at java.base/java.net.URLPermission.init(URLPermission.java:206)
at java.base/java.net.URLPermission.<init>(URLPermission.java:186)
at java.base/sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(HttpURLConnection.java:1179)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1612)
at OpenStream.testMalformedURL(OpenStream.java:21)
at OpenStream.main(OpenStream.java:14)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335)
at java.base/java.lang.Thread.run(Thread.java:840)
JavaTest Message: Test threw exception: java.lang.StringIndexOutOfBoundsException
JavaTest Message: shutting down test
TEST RESULT: Failed. Execution failed: `main' threw exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
--------------------------------------------------
Test results: failed: 1
---------- BEGIN SOURCE ----------
/* @test
*/
import java.io.*;
import java.net.*;
public class OpenStream {
public static void main(String[] args) throws IOException {
testMalformedURL();
}
static void testMalformedURL() {
// Test behavior with obviously malformed URL
try {
URL u = new URL("http:///path-without-host");
u.openConnection(Proxy.NO_PROXY).getInputStream();
throw new RuntimeException("Expected MalformedURLException or similar error");
} catch (MalformedURLException e) {
System.out.println("MalformedURLException thrown as expected: " + e.getMessage());
} catch (IOException e) {
// Other IOExceptions are acceptable for malformed URLs
System.out.println("IOException thrown for malformed URL: " + e.getClass().getSimpleName() + ": " + e.getMessage());
}
}
}
---------- END SOURCE ----------
os: Ubuntu Linux
jtreg 7.6-dev+0n
jdk: temurin 17.0.14 & 17.0.16
A DESCRIPTION OF THE PROBLEM :
URL.openConnection throws StringIndexOutOfBoundsException when using -avm in Jtreg within JDK-17.
Removing -avm flag/using JDK-24/not using jtreg will never trigger it, and openConnection will throw IOException as expected.
When I using latest JDK17(temurin 17.0.16), I get some warnings.
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by com.sun.javatest.regtest.agent.RegressionSecurityManager (file:/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar)
WARNING: Please consider reporting this to the maintainers of com.sun.javatest.regtest.agent.RegressionSecurityManager
WARNING: System::setSecurityManager will be removed in a future release
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Using Jtreg to execute testcase
jtreg -va -ea -avm OpenStream.java
ACTUAL -
--------------------------------------------------
TEST: src/test/java/OpenStream.java
TEST JDK: /home/usrname/.jdks/temurin-17.0.16
ACTION: build -- Passed. Build successful
REASON: Named class compiled on demand
TIME: 0.437 seconds
messages:
command: build OpenStream
reason: Named class compiled on demand
started: Wed Sep 03 15:23:51 CST 2025
Test directory:
compile: OpenStream
finished: Wed Sep 03 15:23:52 CST 2025
elapsed time (seconds): 0.437
ACTION: compile -- Passed. Compilation successful
REASON: .class file out of date or does not exist
TIME: 0.432 seconds
messages:
command: compile /home/usrname/Develop/Project/src/test/java/OpenStream.java
reason: .class file out of date or does not exist
started: Wed Sep 03 15:23:51 CST 2025
Mode: agentvm
Agent id: 1
Process id: 579295
finished: Wed Sep 03 15:23:52 CST 2025
elapsed time (seconds): 0.432
configuration:
Boot Layer (javac runtime environment)
class path: /home/usrname/Develop/jtreg/build/images/jtreg/lib/javatest.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar
patch: java.base /home/usrname/Develop/Project/JTwork/patches/java.base
javac compilation environment
source path: /home/usrname/Develop/Project/src/test/java
class path: /home/usrname/Develop/Project/src/test/java
/home/usrname/Develop/Project/JTwork/classes/src/test/java
rerun:
cd /home/usrname/Develop/Project/JTwork/scratch && \
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
DESKTOP_SESSION=plasma \
DISPLAY=:1 \
HOME=/home/usrname \
LANG=en_US.UTF-8 \
PATH=/bin:/usr/bin:/usr/sbin \
WAYLAND_DISPLAY=wayland-0 \
XDG_CONFIG_DIRS=/home/usrname/.config/kdedefaults:/etc/xdg \
XDG_CURRENT_DESKTOP=KDE \
XDG_DATA_DIRS=/home/usrname/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share \
XDG_MENU_PREFIX=plasma- \
XDG_RUNTIME_DIR=/run/user/1000 \
XDG_SEAT=seat0 \
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 \
XDG_SESSION_CLASS=user \
XDG_SESSION_DESKTOP=KDE \
XDG_SESSION_ID=2 \
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1 \
XDG_SESSION_TYPE=wayland \
XDG_VTNR=1 \
XMODIFIERS=@im=fcitx \
/home/usrname/.jdks/temurin-17.0.16/bin/javac \
-J-ea \
-J-Dtest.vm.opts=-ea \
-J-Dtest.tool.vm.opts=-J-ea \
-J-Dtest.compiler.opts= \
-J-Dtest.java.opts= \
-J-Dtest.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-J-Dcompile.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-J-Dtest.timeout.factor=1.0 \
-J-Dtest.root=/home/usrname/Develop/Project \
-J-Dtest.name=src/test/java/OpenStream.java \
-J-Dtest.verbose=Verbose[p=FULL,f=FULL,e=FULL,t=false,m=false] \
-J-Dtest.file=/home/usrname/Develop/Project/src/test/java/OpenStream.java \
-J-Dtest.src=/home/usrname/Develop/Project/src/test/java \
-J-Dtest.src.path=/home/usrname/Develop/Project/src/test/java \
-J-Dtest.classes=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-J-Dtest.class.path=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-J-Dtest.class.path.prefix=/home/usrname/Develop/Project/JTwork/classes/src/test/java:/home/usrname/Develop/Project/src/test/java \
-d /home/usrname/Develop/Project/JTwork/classes/src/test/java \
-sourcepath /home/usrname/Develop/Project/src/test/java \
-classpath /home/usrname/Develop/Project/src/test/java:/home/usrname/Develop/Project/JTwork/classes/src/test/java /home/usrname/Develop/Project/src/test/java/OpenStream.java
ACTION: main -- Failed. Execution failed: `main' threw exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
REASON: Assumed action based on file name: run main OpenStream
TIME: 0.184 seconds
messages:
command: main OpenStream
reason: Assumed action based on file name: run main OpenStream
started: Wed Sep 03 15:23:52 CST 2025
Mode: agentvm
Agent id: 2
Process id: 579342
finished: Wed Sep 03 15:23:52 CST 2025
elapsed time (seconds): 0.184
configuration:
Boot Layer
class path: /home/usrname/Develop/jtreg/build/images/jtreg/lib/javatest.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/junit-platform-console-standalone-1.11.0.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/testng-7.3.0.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/guice-5.1.0.jar
/home/usrname/Develop/jtreg/build/images/jtreg/lib/jcommander-1.82.jar
patch: java.base /home/usrname/Develop/Project/JTwork/patches/java.base
Test Layer
class path: /home/usrname/Develop/Project/JTwork/classes/src/test/java
/home/usrname/Develop/Project/src/test/java
rerun:
cd /home/usrname/Develop/Project/JTwork/scratch && \
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus \
DESKTOP_SESSION=plasma \
DISPLAY=:1 \
HOME=/home/usrname \
LANG=en_US.UTF-8 \
PATH=/bin:/usr/bin:/usr/sbin \
WAYLAND_DISPLAY=wayland-0 \
XDG_CONFIG_DIRS=/home/usrname/.config/kdedefaults:/etc/xdg \
XDG_CURRENT_DESKTOP=KDE \
XDG_DATA_DIRS=/home/usrname/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share \
XDG_MENU_PREFIX=plasma- \
XDG_RUNTIME_DIR=/run/user/1000 \
XDG_SEAT=seat0 \
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 \
XDG_SESSION_CLASS=user \
XDG_SESSION_DESKTOP=KDE \
XDG_SESSION_ID=2 \
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1 \
XDG_SESSION_TYPE=wayland \
XDG_VTNR=1 \
XMODIFIERS=@im=fcitx \
/home/usrname/.jdks/temurin-17.0.16/bin/java \
-Dtest.vm.opts=-ea \
-Dtest.tool.vm.opts=-J-ea \
-Dtest.compiler.opts= \
-Dtest.java.opts= \
-Dtest.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-Dcompile.jdk=/home/usrname/.jdks/temurin-17.0.16 \
-Dtest.timeout.factor=1.0 \
-Dtest.root=/home/usrname/Develop/Project \
-Dtest.name=src/test/java/OpenStream.java \
-Dtest.verbose=Verbose[p=FULL,f=FULL,e=FULL,t=false,m=false] \
-Dtest.file=/home/usrname/Develop/Project/src/test/java/OpenStream.java \
-Dtest.src=/home/usrname/Develop/Project/src/test/java \
-Dtest.src.path=/home/usrname/Develop/Project/src/test/java \
-Dtest.classes=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-Dtest.class.path=/home/usrname/Develop/Project/JTwork/classes/src/test/java \
-Dtest.class.path.prefix=/home/usrname/Develop/Project/JTwork/classes/src/test/java:/home/usrname/Develop/Project/src/test/java \
-classpath /home/usrname/Develop/Project/JTwork/classes/src/test/java:/home/usrname/Develop/Project/src/test/java:/home/usrname/Develop/jtreg/build/images/jtreg/lib/javatest.jar:/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar \
OpenStream
stderr:
WARNING: A terminally deprecated method in java.lang.System has been called
WARNING: System::setSecurityManager has been called by com.sun.javatest.regtest.agent.RegressionSecurityManager (file:/home/usrname/Develop/jtreg/build/images/jtreg/lib/jtreg.jar)
WARNING: Please consider reporting this to the maintainers of com.sun.javatest.regtest.agent.RegressionSecurityManager
WARNING: System::setSecurityManager will be removed in a future release
STDERR:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1517)
at java.base/java.net.HostPortrange.<init>(HostPortrange.java:75)
at java.base/java.net.URLPermission$Authority.<init>(URLPermission.java:529)
at java.base/java.net.URLPermission.parseURI(URLPermission.java:497)
at java.base/java.net.URLPermission.init(URLPermission.java:206)
at java.base/java.net.URLPermission.<init>(URLPermission.java:186)
at java.base/sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(HttpURLConnection.java:1179)
at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1612)
at OpenStream.testMalformedURL(OpenStream.java:21)
at OpenStream.main(OpenStream.java:14)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:335)
at java.base/java.lang.Thread.run(Thread.java:840)
JavaTest Message: Test threw exception: java.lang.StringIndexOutOfBoundsException
JavaTest Message: shutting down test
TEST RESULT: Failed. Execution failed: `main' threw exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 0
--------------------------------------------------
Test results: failed: 1
---------- BEGIN SOURCE ----------
/* @test
*/
import java.io.*;
import java.net.*;
public class OpenStream {
public static void main(String[] args) throws IOException {
testMalformedURL();
}
static void testMalformedURL() {
// Test behavior with obviously malformed URL
try {
URL u = new URL("http:///path-without-host");
u.openConnection(Proxy.NO_PROXY).getInputStream();
throw new RuntimeException("Expected MalformedURLException or similar error");
} catch (MalformedURLException e) {
System.out.println("MalformedURLException thrown as expected: " + e.getMessage());
} catch (IOException e) {
// Other IOExceptions are acceptable for malformed URLs
System.out.println("IOException thrown for malformed URL: " + e.getClass().getSimpleName() + ": " + e.getMessage());
}
}
}
---------- END SOURCE ----------