Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как выйти с ситуации???


Автор: XClan 1.9.2004, 11:19
То есть сама программа написана на IDE редакторе типа netbeans
И в ней имеется код который прописывает редактор
Код

absoluteLayout1 = new org.netbeans.lib.awtextra.AbsoluteLayout();
absoluteLayout2 = new org.netbeans.lib.awtextra.AbsoluteLayout();

Проблема заключается в том, что если запустить его с другой JDK , а не с netBeansa

К примеру зпаускаю с /usr/local/diablo-jdk1.3.1/bin/java или c /usr/local/jdk1.4.2/bin/java то выдает ошибку
Код

Exception in thread "main" java.lang.NoClassDefFoundError: org/netbeans/lib/awtextra/AbsoluteLayout

Это значит в стандарной папке с JDK нет такой библиотеки , что у NetBeans...
Как можно безболезненно выйти из такой ситуации???

Автор: gray_k 1.9.2004, 11:34
Не использовать его.
Читаем хелп нетбинса:
Цитата
AbsoluteLayout is not recommended for production applications. The fixed locations and sizes of components do not change when the environment changes. Therefore, significant distortions in appearance can occur when such an application is run on a different platform or when using a different look and feel.
If you design a production application using AbsoluteLayout, consider switching the layout manager to GridBagLayout and then fine-tuning it before you distribute the application.


Второй вариант:
Цитата
If you distribute an application with the IDE's AbsoluteLayout manager, you need to distribute it with the IDE's AbsoluteLayout classes, as these are not part of the standard Java layout sets. These classes are ready for deployment in <install-dir>/modules/ext/AbsoluteLayout.jar.
The source code is also redistributable. It is available in the files AbsoluteLayout.java and AbsoluteConstraints.java, found in <install-dir>/sources/org/netbeans/lib/awtextra.

Автор: Разгильдяй 1.9.2004, 14:10
Используй свою myAbsolutePanel , типа :

Код

public class myAbsolutePanel extends JPanel
{
   public myAbsolutePanel( int width, int height )
   {
       super();
       init( new Dimension ( width, height ) );
   }

   public myAbsolutePanel( Dimension dimension )
   {
       super();
       init( dimension );
   }

   protected void init( Dimension dimension )
   {
       setLayout( null );
       setPreferredSize( dimension );
       setMinimumSize( dimension );
   }

   public void add( Component addObject, int x, int y )
   {
       Insets insets = getInsets();
       Dimension size = addObject.getPreferredSize();
       addObject.setBounds( x + insets.left, y + insets.top, size.width, size.height );
       add( addObject );
   }
}


Автор: XClan 1.9.2004, 17:00
И как запустить если AbsoluteLayout.jar размещу в папку с программой которую надо запустить...
Пробовал так ...
Цитата

bash-2.05b$ /usr/local/jdk1.4.2/bin/java -classpath .:AbsoluteLayout.jar JAL

Но как видно , как будто в архиве нет классов или наверняка не видит архив....
Цитата

Exception in thread "main" java.lang.NoClassDefFoundError: org/netbeans/lib/awtextra/AbsoluteLayout
       at JAL.initComponents(JAL.java:65)
       at JAL.<init>(JAL.java:33)
       at JAL.main(JAL.java:4013)


А так скопировать архив с классами AbsoluteLayout.jar с ./netbeans/modules/ext в $SDK_HOME/jre/lib/ext удается запустить, но это не правильно. Ведь не у всех есть права root, чтобы в jdk выложить эти классы

Автор: XClan 2.9.2004, 09:48
Никак???

Автор: DarkDS 2.9.2004, 09:57
У тебя класспасс через : или ;? smile.gif

Автор: XClan 2.9.2004, 10:13
Вроде решил ! smile.gif
В общем я взял с AbsoluteLayout.jar папку /org c каталогами и с классами... Установил ПАПКУ!! в тот же рабочий каталог с программой и запустил без проблем с diablo-jdk1.3.1 и c jdk1.4.2 в обоих случаях запус был быстрый и проблем не вызывало! ,))
Просто ему нужен был путь к AbsolutesLayout.class который в коде обозначен как org.netbeans.lib.awtextra.AbsolutesLayout.class^ где "." это "/"
В этом случае он сначало посмотрит на родной каталог и если нет то ищет их в каталогах $JDK_HOME ...

Автор: Slanix 2.9.2004, 10:39
Я как-то тоже открывал приложение под другим IDE.
И сделал следующее.
Взял тока класс AbsoluteLayout.class
и поместил его в свой пакет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)