Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > не запускается java-код(пример из книги Дейтела)


Автор: fitdnu2010 8.6.2011, 16:47
Я недавно изучаю java, поэтому прошу помощи. Читаю книгу Технологии программирования на Java. Том 1. Графика, JavaBeans. Пытаюсь запустить пример из этой книги. Запускаю этот код в командной строке, компилятор создаёт файл *.class:

Код

package com.deitel.advjhtpl.gui.webbrowser;

import java.util.*;
import java.net.*;
import java.io.*;
import javax.swing.*;

public class WebBrowserPane extends JEditorPane 

{
  private List history = new ArrayList();
  private int historyIndex;

  public WebBrowserPane()
  {
    setEditable( false );
  }

  public void goToURL( URL url )
  {
    displayPage( url );
    history.add( url );
    historyIndex = history.size() - 1;
  }

  public URL forward()
  {
    historyIndex++;

    if ( historyIndex >= history.size() )
       historyIndex = history.size() - 1;

    URL url = ( URL ) history.get( historyIndex );
    displayPage( url );

    return url;
  }

  public URL back()
  {
    historyIndex--;

    if ( historyIndex < 0 )
       historyIndex = 0;

    URL url = ( URL ) history.get( historyIndex );
    displayPage( url );

    return url;
  }

  private void displayPage( URL pageURL )
  {
    try 
    {
    setPage( pageURL );
    }
    catch ( IOException ioException)
    {
    ioException.printStackTrace();
    }
  }
}


командная строка:

C:\Documents and Settings\fit\com.deitel.advjhtpl.gui.webbrowser>javac WebBrowse
rPane.java
Note: WebBrowserPane.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.




но JVM его не выполняет:

командная строка:

C:\Documents and Settings\fit\com.deitel.advjhtpl.gui.webbrowser>java WebBrowser
Pane
Exception in thread "main" java.lang.NoClassDefFoundError: WebBrowserPane (wrong
 name: com/deitel/advjhtpl/gui/webbrowser/WebBrowserPane)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14
1)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: WebBrowserPane.  Program will exit.

C:\Documents and Settings\fit\com.deitel.advjhtpl.gui.webbrowser>


проверяю код в НетБинсе - ошибок в синтаксисе вроде нет. В чём моя ошибка?

Автор: Nofate 8.6.2011, 16:57
запускайте из директории, откуда у вас растет иерархия пакета (C:\Documents and Settings\fit) командой

Код

java  com.deitel.advjhtpl.gui.webbrowser.WebBrowserPane


Но это не избавит вас от того, что класс не содержит статического метода main и запускаться там и нечему.


Автор: fitdnu2010 8.6.2011, 17:47
Цитата

запускайте из директории, откуда у вас растет иерархия пакета (C:\Documents and Settings\fit) командой

Выделить всёБез подсветки
1:
    
java  com.deitel.advjhtpl.gui.webbrowser.WebBrowserPane


запустил, командная строка выдаёт следующее:


C:\Documents and Settings\fit>java com.deitel.advjhtpl.gui.webbrowser.WebBrowser
Pane
Exception in thread "main" java.lang.NoClassDefFoundError: com/deitel/advjhtpl/g
ui/webbrowser/WebBrowserPane
Caused by: java.lang.ClassNotFoundException: com.deitel.advjhtpl.gui.webbrowser.
WebBrowserPane
        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:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: com.deitel.advjhtpl.gui.webbrowser.WebBrowserPane
.  Program will exit.



я понял то, что метода main в этом коде нет, поэтому не запускается.
этот код - часть браузера, мой преподаватель запускал его.
может я что-то не так делаю?

Автор: Skipy 8.6.2011, 18:08
http://www.skipy.ru/technics/likbez.html

Автор: Samotnik 9.6.2011, 23:12
fitdnu2010, этот класс, явно часть чего-то: проекта, либо другого класса. Сам по себе он не функционален  smile 

Автор: fitdnu2010 10.6.2011, 11:09
ок, спасибо, буду разбираться.

Автор: sergioK1 11.6.2011, 08:34
Цитата(Skipy @ 8.6.2011,  17:08)
http://www.skipy.ru/technics/likbez.html

Skipy 
А вопрос можно , ? может мы сами их плодим , таких разработчиков, т,е, большинство из понятия о програмировании не имеет,
в сети пару примеров нашли и думают что уже крутые,  мне кажеться есть минимуи вещей которые начинающий должен освоить
сам , а если не может значит эта область не для него,  Я сам не раз сталкивался с подобными вещами но мне почему-то в голову
не приходило у кого-то спрашивать,
Может не стоит все разжевывать , есть вещи до которых разработчик сам доходить должен 
IMHO

Автор: dorogoyIV 11.6.2011, 11:46
sergioK1, так то оно так, но, написание кода должно упрощаться...
например, когда то давным давно разжечь огонь было круто, теперь у каждого есть зажигалка... (я надеюсь моя мысль понятна? ;) )

так же и начинающие программисты писали фиг знает на чем, зато тебе теперь не надо думать как связать свой код с процессором...

Автор: sergioK1 11.6.2011, 14:44
Цитата(dorogoyIV @ 11.6.2011,  10:46)
sergioK1, так то оно так, но, написание кода должно упрощаться...

так же и начинающие программисты писали фиг знает на чем, зато тебе теперь не надо думать как связать свой код с процессором...

Мысль понятна, но это не отменяет понимания нижнего уровня, а последнее происходит все чаще и чаще,

Я же не призываю писать на С и изучать все возможные виды архитектур или флаги компайлера, Intel vs ARM и т,д,
но хотя бы  несколько раз прогнать LinkList и увидеть его в дебаге, обязан каждый если он называет себя програмистом,
один раз увидеть работу деструктора на С++ , отличиее стэка от хипа, реалокацию памяти и т,д,  хотя бы минимально понимать 
что такое протоколы связи , увидеть два-три раза как выглядит память и т,д,

Если не вовсем понятно ,то у меня есть еще куча примеры  

Я в юности тракером был , так без года стажа на обычном грузовике, сдавать на прицеп было нельзя , и очень даже понятно почему
и так почти во всех профессиях,

почему в нашей пытаються сделать по другому,

P.S.
это у меня крик души ,  smile давно наболело 


 

Автор: dorogoyIV 11.6.2011, 14:53
sergioK1, прекрасно тебя понимаю smile
но надо смириться ;)

Добавлено через 8 минут и 8 секунд
даже знаешь, продолжу немного...
не надо начинающим программистам заморачиваться на низком уровне.
пусть двигают программирование вперед!
все знать все равно невозможно...

Автор: sergioK1 11.6.2011, 16:26
Цитата(dorogoyIV @ 11.6.2011,  13:53)
не надо начинающим программистам заморачиваться на низком уровне.
пусть двигают программирование вперед!
все знать все равно невозможно...


А Я считаю что надо , пусть минимально но надо ,

ну а xайбернет как ты их научишь  без знания SQL ?






Автор: dorogoyIV 12.6.2011, 05:39
sergioK1, я и теперь иногда пыхчу над ассемблером...
да, может быть немного обидно - "я пыхтел, а они пришли на готовое..." smile
надо смириться с этим...  smile 

(ну а минимальные знания конечно надо иметь...)

Автор: sergioK1 12.6.2011, 10:41
Цитата(dorogoyIV @ 12.6.2011,  04:39)
sergioK1, я и теперь иногда пыхчу над ассемблером...

Для каких задач ?

Автор: dorogoyIV 12.6.2011, 16:30
sergioK1, бывают такие ситуации...  smile 
http://forum.vingrad.ru/index.php?showtopic=324540&view=findpost&p=2312812

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