Установка SDK и ошибка main

Модератор: Absurd

omnikar
Сообщения: 7
Зарегистрирован: 03 мар 2005, 17:07

03 мар 2005, 17:19

Помогите пожалуйста чайнику. Пытаюсь начать программировать на Яве, но не могу отладить SDK правильно. Проблема в том что при компиляции java файлов (даже из примеров) создаются классы не пригодные для использования, т.е. если файл "name.java"

import java.awt.*;
import java.applet.*;
public class name extends Applet {
public void paint(Graphics g) {
g.drawString("000 Hello World!", 20, 20);
} }

я компелю как javac.exe name.java то получаю класс name.class который при запуске java.exe name выдает ошибку:

Exception in thread "main" java.lang.NoSuchMethodError: main

Причем пробывал компелить и так "javac.exe" -g -O -classpath C:\j2sdk1.4.1_07\lib "name.java". Все равно вылазиет эта ошибка!

А также если я обращаюсь к этому классу из html то тоже пишется что не найден класс name.class

Подскажите пожалуйста как это лечить?
Я установил:
j2sdk1.4.1_07

в autoexec.bat прописал:
SET CLASSPATH=.;C:\j2sdk1.4.1_07\lib;C:\j2sdk1.4.1_07\jre\lib;C:\j2sdk1.4.1_07\jre\lib\rt.jar;C:\j2sdk1.4.1_07\jre\lib\charsets.jar;C:\j2sdk1.4.1_07\jre\lib\ext\dnsns.jar;C:\j2sdk1.4.1_07\jre\lib\jaws.jar;C:\j2sdk1.4.1_07\jre\lib\jce.jar;C:\j2sdk1.4.1_07\jre\lib\jsse.jar;C:\j2sdk1.4.1_07\jre\lib\ext\localedata.jar;C:\j2sdk1.4.1_07\jre\lib\ext\sunjce_provider.jar;C:\j2sdk1.4.1_07\jre\lib\sunrsasign.jar

path C:\j2sdk1.4.1_07\bin

Подскажите что ему не хватает?
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

03 мар 2005, 17:30

Апплеты - это контролы, которые предназначены для выполнения в рамках веб-страницы. Например так:

Код: Выделить всё

<HTML>
<HEAD>
<TITLE>Example</TITLE>
</HEAD>
<BODY>
<h1>Applet-example:</h1>
<APPLET CODE='name.class' WIDTH=65% HEIGHT=250>
Ваш броузер не поддерживает апплеты Java.
</APPLET>
</BODY>
</HTML> 
Ты же пытаешься запустить апплет как автономное приложение.
2B OR NOT(2B) = FF
omnikar
Сообщения: 7
Зарегистрирован: 03 мар 2005, 17:07

03 мар 2005, 17:58

Так я тоже пробовал запустить, но выдается что класс name.class не найден. Т.е. класс при компиляции создается какойто битый, не рабочий. В примерах есть исходник и класс HelloWorldApplet. Я удаляю HelloWorldApplet.class из этой папки где он был вместе с исходником и html и пробую из HelloWorldApplet.java скомпелить такой же класс, но в итоге получаю класс который отличается от приведенного в примере по размеру и не работает при вызове из HelloWorldApplet.html, броузер показывает в строке статуса (при наведеннии мыши на апплет) что не может найти класс. Может я компиляцию не правильно делаю?
Deady
Сообщения: 193
Зарегистрирован: 17 фев 2004, 13:13
Откуда: Москва
Контактная информация:

03 мар 2005, 20:29

попробуй так:

Код: Выделить всё

import java.io.*;

public class HelloWorld {

   public static void main(String[] args) {
      System.out.println("Hello World!");
   }
}
сохрани файл под именем HelloWorld.java. (Регистр важен)
теперь

Код: Выделить всё

javac HelloWorld.java
java HelloWorld
Аватара пользователя
Oscar
Сообщения: 958
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

03 мар 2005, 20:32

omnikar,
расскажу как я только что откомпилировал и как у меня заработало.
Может чем-то поможет, может наведёт на нужную мысль.

Папка D:\JavaApplet
В ней есть файл name.java

Код: Выделить всё

import java.awt.*;
import java.applet.*;
public class name extends Applet {
public void paint(Graphics g) {
g.drawString("000 Hello World!", 20, 20);
} } 
JDK у меня лежит в E:\jdk1.5.0

Пути, кажется, не настроены.

Находясь в папке D:\JavaApplet в коммандной строке пишу:
e:\jdk1.5.0\bin\javac D:\JavaApplet\name.java
Создаю в той же папке файл test.html:

Код: Выделить всё

<HTML>
<HEAD>
<TITLE>Example</TITLE>
</HEAD>
<BODY>
<h1>Applet-example:</h1>
<APPLET CODE='name.class' WIDTH=65% HEIGHT=250>
Ваш броузер не поддерживает апплеты Java.
</APPLET>
</BODY>
</HTML>
Ввожу в броузере:
file:///D:/JavaApplet/test.html
Всё работает.
Попробуй как можно точнее придерживаться этой процедуры, если не заработает - пиши :D
Deady
Сообщения: 193
Зарегистрирован: 17 фев 2004, 13:13
Откуда: Москва
Контактная информация:

03 мар 2005, 20:35

кстати.
public void paint(Graphics g)
Paints the container. This forwards the paint to any lightweight components that are children of this container.

If this method is reimplemented, super.paint(g) should be called
--------------------------------------------------------------------------
so that lightweight components are properly rendered. If a child component is entirely clipped by the current clipping setting in g, paint() will not be forwarded to that child.
omnikar
Сообщения: 7
Зарегистрирован: 03 мар 2005, 17:07

03 мар 2005, 23:13

Спасибо Deady, как Вы предложили так у меня работает, у меня не хочет апплет в броузере отражаться.

Oscar, сделал все как Вы сказали:
1. Создал C:\j2sdk1.4.1_07\jre\name.java
2. Запустил: C:\j2sdk1.4.1_07\bin\javac C:\j2sdk1.4.1_07\jre\name.java
3. Создал: C:\j2sdk1.4.1_07\jre\test.html
4. Запустил: file:///C:/j2sdk1.4.1_07/jre/test.html

Но увы опять пишет что class name not found
Может у меня броузеру что нужно, а ведь из примера (готовые) классы запускает нормально из любой папки.

Причем надо отметить что запуск
appletviewer test.html
удается нормально
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

04 мар 2005, 00:46

фишка в настройках браузера может быть
майкрософт лишили лицензии на ява машину, но в настройках эксплорера можно указать - использовать для апплетов определенную ява машину
В SAD - все в SAD.
omnikar
Сообщения: 7
Зарегистрирован: 03 мар 2005, 17:07

04 мар 2005, 03:20

Мне кажется врядли, если бы это были настройки броузера (кстати у меня это Explorer 5.5 уже со встроеной ява машиной), то все бы апплеты не шли, а может это компиляция всеже у меня както криво идет? Для нагляности обычный пример (гдето скачал не помню):

import java.awt.*;
import java.applet.*;
public class HelloWorldApplet extends Applet {
public void paint(Graphics g) {
g.drawString("Hello World!", 20, 20);
} }

Здесь выложен апплет с оригинальным классом HelloWorldApplet.class (который уже был в примере):
http://iptop.net/3/HelloWorldApplet.html
И все здесь идет замечательно

А вот апплет имеет класс HelloWorldApplet.class скомпилированный мной из исходника javac HelloWorldApplet.java:
http://iptop.net/4/HelloWorldApplet.html
И у меня здесь показывается что не найдено класса HelloWorldApplet

Причем в исходном случае класс весил 430 байт, а в том что я скомпелировал всего 388 байт, может надо как то подругому компилировать?
Аватара пользователя
AiK
Сообщения: 2271
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

04 мар 2005, 05:20

Explorer 5.5 уже со встроеной ява машиной

версии 1.1
Запустил: C:\j2sdk1.4.1_07\bin\javac
версия 1.4
И чего вы хотите от бедного ослика ИЕ?
В FireFox со свежим плагином (1.5) всё нормально работает. Отображает 000 Hello World!
Даже самый дурацкий замысел можно воплотить мастерски
Ответить