2013-12-05 2 views
1

Я использую пакет javax.xml.soap в своем рабочем приложении для Java, и я хотел бы проверить, является ли этот пакет (и более того, какой-либо пакет, поставляемый с JDK) доступен в JRE на разных платформах (win, mac, linux) для развертывания. Целью является убедиться, что мое приложение будет работать на целевых машинах с JRE или проверить, требуется ли полная JDK. Также для linux я хотел бы убедиться, что open-jdk jre 1.6 (а не оракула один) будет достаточно. БлагодаряГде проверить, поставляется ли пакет с JRE для Java

+0

'Class.forName (someClass)' и ждать ClassNotFoundException ... – tilpner

+0

Извините, возможно, мой вопрос был недостаточно ясным. Я ищу документацию о том, доступен ли определенный пакет JRE или требуется JDK перед развертыванием моего приложения. Я хотел бы избежать упаковки моего приложения и тестирования на оборудованной целевой машине JRE, чтобы убедиться, что этот пакет/класс существует. – lviggiani

+1

Вы всегда можете заглянуть в rt.jar JRE, отправленный с вашим JDK ... Они все-таки .zip-файлы. – tilpner

ответ

1

Если вы wan't, чтобы узнать, если класс включен в JRE у вас есть, сделайте следующее:

  • Найдите rt.jar вашего JRE, шахта была в /usr/lib/jvm/jdk1.7.0_07/jre/lib/rt.jar
  • Открыть его с ваш любимый .zip зритель
  • Поиск нужных занятий
  • Все готово!

Если вы wan't, чтобы узнать, если JRE вы работаете в содержит свой класс, выполните следующие действия:

  • вызов Class.forName с именем класса класса вы wan't для тестирования
  • Поместите это в блок try-catch
  • Если вы поймаете ClassNotFoundException, его там нет!
  • Обратите внимание, что это не указано, находится ли он в библиотеке по умолчанию, только это находится на пути к классам!
0

Пути угадать, есть ли пакет присутствует в JVM во время выполнения:

  • Проверьте свойство JRE версии системы (java.version)
  • Попробуйте загрузить классы вы ожидаете в javax.xml.soap использовании reflection

на практике, я тем не менее достаточно потребовать определенное JRE (ы), которые будут использоваться для запуска моего приложения в моих требованиях к системе, а не просто пытается обнаружить ш hether пакет доступен.

+0

Извините, возможно, мой вопрос был недостаточно ясным. Я ищу документацию о том, доступен ли определенный пакет JRE или требуется JDK перед развертыванием моего приложения. Я хотел бы избежать упаковки моего приложения и тестирования на оборудованной целевой машине JRE, чтобы убедиться, что этот пакет/класс существует. – lviggiani

+0

Таким образом, вы не пытаетесь достичь этого программно, но, читая документы. У вас тоже есть Google. – gyorgyabraham

+0

В общем, я бы сказал, что вам не понадобится JDK, если вы не хотите использовать какие-либо средства разработки (скажем, javac). Все пакеты времени исполнения являются частью JRE или являются некоторыми сторонними библиотеками или, возможно, некоторыми надстройками Oracle (пример JavaMail). Однако у меня нет опыта работы с JDK, кроме Oracle и IBM. Возможно, некоторые из них упакованы по-разному. Если бы мне пришлось их поддержать, я прибегаю к угадыванию, как описано в ответе. –

0

Это усилие на переносимость очень хорошее! Я предлагаю вам требовать Java 7, потому что OpenJDK7 по умолчанию используется для него, поэтому больше нет «oracle java лучше openjdk». Я думаю, что требование Java 7 лучше, чем требование конкретной реализации Java (Oracle) или «проверка, работает ли она на openjdk 6». В любом случае я бы предложил очки Дэвида!

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