смена Jdk

Тема в разделе "Java", создана пользователем jCoder, 15 фев 2010.

  1. jCoder

    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

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

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    в чем проблема поставить две jvm и через JAVA_HOME задать явно?
     
  3. jCoder

    jCoder Гость

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

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    потому как скорее всего запускается с разными classpath.
    запусти jar с приотаченной консолью и посмотри что пишет. java -jar path/to/you.jar
     
  5. jCoder

    jCoder Гость

    А происходит следующее: я закрепил "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
      Размер файла:
      137,8 КБ
      Просмотров:
      58
  6. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    как juh.jar попадает на classpath?
    запости juh.jar на форум

    Добавлено:
    это условие выполняется?
     
  7. jCoder

    jCoder Гость

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
  9. jCoder

    jCoder Гость

  10. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    вывод команды echo %CLASSPATH%
    и содержимое файла ArchiveManager.jar/META-INF/MANIFEST.MF
     
  11. jCoder

    jCoder Гость

    Я закрепил архив Screens:)
     

    Вложения:

    • Screens.rar
      Размер файла:
      83,2 КБ
      Просмотров:
      8
  12. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    добавлять jar's на класспас нужно не только при компиляции но и при запуске. ссылку как это делать я давал в 8 посте. вообще в classpath и classloaders необходимо разбираться любому яву программисту. без этого даже не стоит начинать писать "hello world"
     
  13. jCoder

    jCoder Гость

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    в MANIFEST.MF тоже можно прописать "пути"
     
  15. jCoder

    jCoder Гость

    Подскажи как это правильно сделать, в JBuilder'e, он у меня не редактируется:newconfus:(
     
  16. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    с помощью атрибута Class-Path
    например так:
    пути относительные

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

    jCoder Гость

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

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    да. если аккуртно, то можно работать с jar как c zip архивом. толко есть один нюанс, спецификация требует что бы MANIFEST.MF шел первым в архивном индексе (или как там его называют), не все архиваторы позволяют выполнить это требование
     
  19. jCoder

    jCoder Гость

    Хороше, я попытаюсь!
    Получается, что если мне нужно добавить в свою программу обращение к классам 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 и т.д.
    Пути нужно полностью прописывать к этим архивам, или просто указать их?
     
  20. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    можно, но в данном конкретном твоем случае не нужно, т.к. пути, как я уже писал, в атрибуте Class-Path относительные, juh.jar, uno.jar должны находиться в оригинальной директории, куда установлен OpenOffice.
    Если бы juh.jar, uno.jar можно было покласть положить в одну директорию с ArchiveManager, тогда да, это бы сработало.

    в твоем случае проще всего написать батник вроде этого
    java -cp путь/juh.jar; путь/uno.jar ... -jar ArchiveManager.jar
     
Загрузка...

Поделиться этой страницей