Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Настройка JDK, поставленного из репозиториев и компиляция в консоле.  (Прочитано 2119 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Knes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
  • "Наши знания - залог успеха" ©
    • Просмотр профиля
Доброго времени суток всем!

Установил JDK и Eclipse из репозиториев. В Eclipse все прекрасно компилиться, запускается (как бы, так и должно быть), а вот как скомпилить тот же самый name_file.java  в консоле, без IDE?

Здесь http://web-scalability.com/2008/06/02/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-eclipse-%D0%BD%D0%B0-linux/ читал, что если устанавливать JDK из bin'арников, то надо что-то прописывать в /etc/bash.bashrc для CLASSPATH, PATH. Просветите, как найти этот компилятор (установленный из репозиториев) в системе и показать его исходнику? И повлияет ли это на работу Eclipse?   :-[.

P.S. Если вдруг понадобится OC - Ubuntu 11.04
« Последнее редактирование: 09 Октября 2011, 17:43:45 от Knes »
«Лишь та - ошибка, что не исправляется.» © Конфуций

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
which javac находит компилятор?
Если находит, то что говорит
javac YourClassName.java

Оффлайн Knes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
  • "Наши знания - залог успеха" ©
    • Просмотр профиля
Компилятор находит, и, вроди, даже компилит. Но то, что скомпилилось, не запускается:

bagi@knes:~$ javac /home/bagi/Work/one.java
bagi@knes:~$ java /home/bagi/Work/one
Exception in thread "main" java.lang.NoClassDefFoundError: /home/bagi/Work/one
Caused by: java.lang.ClassNotFoundException: .home.bagi.Work.one
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /home/bagi/Work/one. Program will exit.
bagi@knes:~$

«Лишь та - ошибка, что не исправляется.» © Конфуций

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
А с именем класса точно ошибок нет?

Оффлайн Knes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
  • "Наши знания - залог успеха" ©
    • Просмотр профиля
Вот содержание:
package the_first;

public class one {
public static void main(String[] args) {
System.out.println("Java ");
}

}

В eclipse работает нормально. Всё выполняется.
«Лишь та - ошибка, что не исправляется.» © Конфуций

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Eclipse, AFAIK, по-умолчанию собирает jar-файл и запускает его. А после javac получается обычный .class, поэтому либо запускаем из того же каталога, где находится .class файл, либо добавляем в CLASSPATH каталог, в котором он находится, например так:
export CLASSPATH=$CLASSPATH:/home/bagi/Work/
java one

Оффлайн Knes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
  • "Наши знания - залог успеха" ©
    • Просмотр профиля
Полазил по нету, что-то изменял - изменял, потом reboot... - уже и eclipse не работает(при загрузке ошибку выкидывает)


!SESSION 2011-10-09 21:06:34.308 -----------------------------------------------
eclipse.buildId=M20110210-1200
java.version=1.6.0_22
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=ru_RU
Command-line arguments:  -os linux -ws gtk -arch x86

!ENTRY org.eclipse.osgi 4 0 2011-10-09 21:06:36.502
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
no swt-gtk-3659 in java.library.path
no swt-gtk in java.library.path
Can't load library: /usr/lib/eclipse/debian-swt/libswt-gtk-3659.so
Can't load library: /usr/lib/eclipse/debian-swt/libswt-gtk.so
Can't load library: /tmp/swtlib-32/libswt-gtk-3659.so
Can't load library: /tmp/swtlib-32/libswt-gtk.so

at org.eclipse.swt.internal.Library.loadLibrary(Library.java:270)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:174)
at org.eclipse.swt.internal.C.<clinit>(C.java:21)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63)
at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132)
at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:687)
at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161)
at org.eclipse.ui.internal.ide.application.IDEApplication.createDisplay(IDEApplication.java:145)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:88)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
Пробовал переустановить eclipse, но картина не изменилась.

И прописывание CLASSPATH в папку с запускаемым файлом ничего не изменило((

bagi@knes:~$ export CLASSPATH=$CLASSPATH:/home/bagi/Work/
bagi@knes:~$ java one
Exception in thread "main" java.lang.NoClassDefFoundError: one (wrong name: the_first/one)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: one. Program will exit.
bagi@knes:~$


 :-\
« Последнее редактирование: 09 Октября 2011, 23:05:38 от Knes »
«Лишь та - ошибка, что не исправляется.» © Конфуций

Оффлайн ArtemZ

  • Участник
  • *
  • Сообщений: 110
    • Просмотр профиля
Компилятор находит, и, вроди, даже компилит. Но то, что скомпилилось, не запускается:

bagi@knes:~$ javac /home/bagi/Work/one.java
bagi@knes:~$ java /home/bagi/Work/one
Exception in thread "main" java.lang.NoClassDefFoundError: /home/bagi/Work/one
Caused by: java.lang.ClassNotFoundException: .home.bagi.Work.one
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: /home/bagi/Work/one. Program will exit.
bagi@knes:~$

cd /home/bagi/Work/
java one
или
java /home/bagi/Work/one.class

Оффлайн Knes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
  • "Наши знания - залог успеха" ©
    • Просмотр профиля
bagi@knes:~$ cd /home/bagi/Work/
bagi@knes:~/Work$ java one
Exception in thread "main" java.lang.NoClassDefFoundError: one
Caused by: java.lang.ClassNotFoundException: one
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: one.  Program will exit.
bagi@knes:~/Work$

Пользователь решил продолжить мысль 10 Октября 2011, 01:35:37:
Ура 
bagi@knes:~/Work$ java -cp .:/usr/share/java/gtk.jar oneпомогло, выполнился файл.  :coolsmiley:
Вот только при каждом выполнении прописавать classpath и путь к библиотекам не есть хорошо.
Можно сделать, чтобы один раз прописать и потом пользоваться постоянно?
И можно как-нибудь вернуть к жизни eclipse?
« Последнее редактирование: 10 Октября 2011, 01:37:16 от Knes »
«Лишь та - ошибка, что не исправляется.» © Конфуций

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Можно в .bashrc добавить
export CLASSPATH=.:/usr/share/java/gtk.jarА еще лучше пользоваться системами сборки типа Apache Ant.

Оффлайн Knes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 27
  • "Наши знания - залог успеха" ©
    • Просмотр профиля
Спасибо, всё добавилось и работает.  8)
«Лишь та - ошибка, что не исправляется.» © Конфуций

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
А на Ant всё таки обратите внимание, очень удобная вещь для разработки на Java.
Википедия
Офф. сайт

 

Страница сгенерирована за 0.025 секунд. Запросов: 22.