У меня есть исходный код:ClassLoader на виртуальной машине
private Image getImage(String path, ClassLoader loader) {
InputStream image = null;
try {
image = loader.getResourceAsStream(path);
return new Image(PlatformUI.getWorkbench().getDisplay(), image);
} finally {
if (image != null) {
try {
image.close();
}
catch (IOException e) {
//OK
}
}
}
}
На моем компьютере этот код работает идеально. Но на виртуальной машинной линии:
loader.getResourceAsStream(path);
всегда возвращает null. Зачем?
EDIT:
Путь - это относительный путь. Например: icons/tools/device.png. Приложение, которое я разрабатываю, содержит более десяти проектов. Я использую Eclipse IDE. Все проекты имеют структуру:
- com.pkg.name - папку с классами иконок
- папку с иконками и другими файлами
Jar файлы имеют такую структуру тоже.
На моих компьютерах работает отлично. На виртуальной машине (Windows Server (64-разрядная версия)) приложение не может загружать изображения из файла Jar.
Не могли бы вы прояснить, о какой VM вы говорите? Я, хотя JVM на первый взгляд, но это может быть неправильное предположение. –
Конечно. Виртуальная машина означает 64-битный Windows Server. http://en.wikipedia.org/wiki/Virtual_machine. –
Другой вопрос - это стандартное приложение java, OSGI или даже RCP? Если это OSGi или RCP, тогда проблема может быть решена путем двойной проверки манифеста и их разделов экспорта/импорта. –