Image

Imagelomka wrote in Imageru_java

архивные странности

Кто-нибудь знает, почему метод URL.openConnection(), который работает из архива, если запускать его командой
java -jar archive_name.jar - не работает, если запускать тот же самый архив простым даблкликом ?
Операционка WindowsXP SP2. Пример:
Например, есть вот такой класс:

package test;

import java.io.BufferedInputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JOptionPane;

public class ConnectionTest {

public static void alert(Object text) {
JOptionPane.showMessageDialog(null, text.toString(), "",
JOptionPane.INFORMATION_MESSAGE);
}

private ConnectionTest() throws Exception {
StringBuffer response = new StringBuffer();
int c;
URLConnection uc = new URL("http://google.com").openConnection();
uc.setDoInput(true);
BufferedInputStream bis = new BufferedInputStream(uc.getInputStream());
while ((c = bis.read()) != -1) {
response.append((char) c);
}
bis.close();
String text = response.toString();
alert("text.length()=" + text.length());
}

public static void main(String[] args) {
try {
new ConnectionTest();
} catch (Exception e) {
alert("error in connection test: "+e);
}
}

}

Если экспортировать его в исполняемый connector_test.jar, и запустить командой
java -jar connector_test.jar - всё работает прекрасно.
Однако, если запускать его даблкликнув по архиву - получается исключение:
java.net.ConnectException: Connection refused: connect

Структура архива:

-test
--ConnectionTest.class
-META-INF
--MANIFEST.MF

Внутренности MANIFEST.MF :

Manifest-Version: 1.0
Class-Path: .
Main-Class: test.ConnectionTest

WTF и что нужно сделать, чтобы работало с даблклика ?