2014-01-19 3 views
2

Я использую this HttpServer класс. Что можно сделать, чтобы установить WEB_ROOT на ресурс внутри файла .jar?Как получить ресурсы в .jar?

Я пытался сделать так,

static final File WEB_ROOT = new File(HttpServer.class.getResource("www")); 

но у меня ошибка "нет подходящего конструктора найдено для файла (URL)".

Compilaton

~$ javac HttpServer.java 

Создание банка файл

~$ jar cfe http.jar HttpServer HttpServer.class ./www/ 

Что я делаю неправильно?

ответ

0

Чтобы получить файл в банке, используйте:

InputStream is = HttpServer.class.getResourceAsStream("www"); 

альтернативно

 static File WEB_ROOT = null; 
static { 
    try { 
     WEB_ROOT = new File(HttpServer.class.getResource("www").toURI()); 
    } catch (URISyntaxException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

, но это не очень хорошая идея, чтобы сделать его статическим.

+0

HttpServer.java:19: ошибка: незарегистрированное исключение URISyntaxException; должен быть пойман или объявлен брошенным static final Файл WEB_ROOT = новый файл (HttpServer.class.getResource ("www"). toURI()); – Sasay

+0

до --- см. Посмотрите сейчас, но избегайте этого статического способа – giusy

+0

Если запрошенный файл или каталог находится внутри фляги, вы получите jar: URL вместо URL-адреса файла:. Вы не можете передать jar: URL-адрес в конструктор 'File'. – Kenster

Смежные вопросы