смена Jdk

  • Автор темы jCoder
  • Дата начала
J

jCoder

Пишу программу в среде JbuilderX Enterprise использующей JDK v. 1.4.2_01 С этим JDK конфликтуют утилиты OpenOffice (jar-архивы) и я не могу их использовать в своей программе...

Выдает: "FileUtil.java": cannot access com.sun.star.uno.UnoRuntime,bad class file: C:\Program Files\OpenOffice.org 3\URE\java\ridl.jar\com\sun\star\uno\UnoRuntime.class,class file has wrong version 49.0, should be 48.0,Please remove or make sure it appears in the correct subdirectory of the classpath. at line 15, column 25

Очевидно, что-то с версиями классов...

Помогите пожалуйста разобраться в чем дело???
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
в чем проблема поставить две jvm и через JAVA_HOME задать явно?
 
J

jCoder

в чем проблема поставить две jvm и через JAVA_HOME задать явно?

По поводу JAVA_HOME, я так понял это переменная среды? Как её ПРАВИЛЬНОустановить и задать если она не создана?

Дело все в том, что с классами я уже разобрался, и добавил в свою среду JBuilder необходимые jar-файлы для генерации отчетов в OpenOffice 2.0.1!
Проблема вот в чем (признаться я уже голову сломал), в самом JBuilder'e при компиляции и запуске проекта функция генерации отчета работает (она "закреплена" за кнопкой, то есть щелкнул я по кнопочке и вижу свой отчет в запущенном OpenOffice'e) но, после того как я собираю, и упаковываю свой готовый проект в исполняемый jar-файл, а потом запускаю его, происходит нечто, кнопочка эта перестает работать (то есть ни каких событий не происходит)...
Так в чем же, может быть дело здесь??? Почему в самом JBuilder'e все отлично работает, а при запуске готового jar-файла, отчет не генерируется??? Вроде бы все классы собрал, вся взаимосвязи учел, "ан нет". Может быть проблема в создаваемом файле манифесте, или как-то нужно отдельно прописывать пути к файлам классов... Посоветуте как быть?! За ранее благодарю:)
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Так в чем же, может быть дело здесь??? Почему в самом JBuilder'e все отлично работает, а при запуске готового jar-файла, отчет не генерируется???
потому как скорее всего запускается с разными classpath.
запусти jar с приотаченной консолью и посмотри что пишет. java -jar path/to/you.jar
 
J

jCoder

потому как скорее всего запускается с разными classpath.
запусти jar с приотаченной консолью и посмотри что пишет. java -jar path/to/you.jar

А происходит следующее: я закрепил "screen" в "прикрепленных файлах"...

В одном из своих классов (FileUtil), я вызываю метод bootstrap() класса Bootstrap содержащегося в juh.jar установленного OpenOffice'a, задача данного метода заключается в определении контекста и соединения с OpenOffice'ом, и вот собственно на вызов этого метода он и "жалуется" (исключение com.sun.star.comp.helper.BootstrapException).

мой метод соединения с OpenOffice'ом в классе FileUtil
public static void connect() throws Exception {
xRemoteContext = com.sun.star.comp.helper.Bootstrap.bootstrap(); // вот здесь происходит "лажа"
xRemoteServiceManager = xRemoteContext.getServiceManager();
...
}
 

Вложения

  • __________.JPG
    __________.JPG
    120,4 КБ · Просмотры: 595

Kmet

Well-known member
25.05.2006
904
8
BIT
0
как juh.jar попадает на classpath?
запости juh.jar на форум

Добавлено:
One of the first things OOo developers learn is to make sure the juh.jar, jurt.jar, ridl.jar, sandbox.jar and unoil.jar files should be on the classpath and should be in the original directory they were installed in while installing OOo.

это условие выполняется?
 
J

jCoder

как juh.jar попадает на classpath?
запости juh.jar на форум

Добавлено:

это условие выполняется?

Честно говоря, я даже не знаю, как это можно правильно проверить. Что для этого необходимо???
У меня создана переменная среды PATH, которая хранит путь к установленному OpenOffice'у, а также к моему JDK. Что мне нужно сделать???
 
J

jCoder



подробно расскажи как jar запускаешь

Что именно тебя интересует? Если по поводу запуска из командной кансоли, то смотри выше, я закрепил screen там самая первая строка...
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
вывод команды echo %CLASSPATH%
и содержимое файла ArchiveManager.jar/META-INF/MANIFEST.MF
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Дело все в том, что с классами я уже разобрался, и добавил в свою среду JBuilder необходимые jar-файлы для генерации отчетов в OpenOffice 2.0.1!
добавлять jar's на класспас нужно не только при компиляции но и при запуске. ссылку как это делать я давал в 8 посте. вообще в classpath и classloaders необходимо разбираться любому яву программисту. без этого даже не стоит начинать писать "hello world"
 
J

jCoder

добавлять jar's на класспас нужно не только при компиляции но и при запуске. ссылку как это делать я давал в 8 посте. вообще в classpath и classloaders необходимо разбираться любому яву программисту. без этого даже не стоит начинать писать "hello world"

Все ясно, значит все таки проблема с путями классов? А как же быть тогда с файлом MANIFEST.MF???
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
с помощью атрибута Class-Path
например так:
Class-Path: servlet.jar infobus.jar acme/beans.jar
пути относительные

в JBuilder'e, он у меня не редактируется
а кто вас заставляет использвать JBuilder? MANIFEST.MF можно и в обычном тектовом редаторе поправить
 
J

jCoder

с помощью атрибута Class-Path
например так:

пути относительные


а кто вас заставляет использвать JBuilder? MANIFEST.MF можно и в обычном тектовом редаторе поправить

Так, а если он у меня уже в jar-архиве значится... Мне нужно его от туда извлечь, подправить и потом уже обратно каким-то образом упаковать (с помощью утилиты jar набора JDK, я так понял)???
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
с помощью утилиты jar набора JDK
да. если аккуртно, то можно работать с jar как c zip архивом. толко есть один нюанс, спецификация требует что бы MANIFEST.MF шел первым в архивном индексе (или как там его называют), не все архиваторы позволяют выполнить это требование
 
J

jCoder

да. если аккуртно, то можно работать с jar как c zip архивом. толко есть один нюанс, спецификация требует что бы MANIFEST.MF шел первым в архивном индексе (или как там его называют), не все архиваторы позволяют выполнить это требование

Хороше, я попытаюсь!
Получается, что если мне нужно добавить в свою программу обращение к классам OpenOffice'a расположенных в juh.jar, uno.jar и т. д., то нужно будет прописать их в MANIFEST'e.MF..?

Примерно так:?
Содержимое MANIFEST'a.MF

Manifest-Version: 1.0
Main-Class: archivemanager.ArchiveManager
// Потом добавляю Clаss-Path: juh.jar uno.jar и т.д.
Пути нужно полностью прописывать к этим архивам, или просто указать их?
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0
Получается, что если мне нужно добавить в свою программу обращение к классам OpenOffice'a расположенных в juh.jar, uno.jar и т. д., то нужно будет прописать их в MANIFEST'e.MF..?
можно, но в данном конкретном твоем случае не нужно, т.к. пути, как я уже писал, в атрибуте Class-Path относительные, juh.jar, uno.jar должны находиться в оригинальной директории, куда установлен OpenOffice.
Если бы juh.jar, uno.jar можно было покласть положить в одну директорию с ArchiveManager, тогда да, это бы сработало.

в твоем случае проще всего написать батник вроде этого
java -cp путь/juh.jar; путь/uno.jar ... -jar ArchiveManager.jar
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!