Страница 1 из 2

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

Добавлено: 03 мар 2005, 17:19
omnikar
Помогите пожалуйста чайнику. Пытаюсь начать программировать на Яве, но не могу отладить 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

Подскажите что ему не хватает?

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

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

<HTML>
<HEAD>
<TITLE>Example</TITLE>
</HEAD>
<BODY>
<h1>Applet-example:</h1>
<APPLET CODE='name.class' WIDTH=65% HEIGHT=250>
Ваш броузер не поддерживает апплеты Java.
</APPLET>
</BODY>
</HTML> 
Ты же пытаешься запустить апплет как автономное приложение.

Добавлено: 03 мар 2005, 17:58
omnikar
Так я тоже пробовал запустить, но выдается что класс name.class не найден. Т.е. класс при компиляции создается какойто битый, не рабочий. В примерах есть исходник и класс HelloWorldApplet. Я удаляю HelloWorldApplet.class из этой папки где он был вместе с исходником и html и пробую из HelloWorldApplet.java скомпелить такой же класс, но в итоге получаю класс который отличается от приведенного в примере по размеру и не работает при вызове из HelloWorldApplet.html, броузер показывает в строке статуса (при наведеннии мыши на апплет) что не может найти класс. Может я компиляцию не правильно делаю?

Добавлено: 03 мар 2005, 20:29
Deady
попробуй так:

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

import java.io.*;

public class HelloWorld {

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

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

javac HelloWorld.java
java HelloWorld

Добавлено: 03 мар 2005, 20:32
Oscar
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

Добавлено: 03 мар 2005, 20:35
Deady
кстати.
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.

Добавлено: 03 мар 2005, 23:13
omnikar
Спасибо 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
удается нормально

Добавлено: 04 мар 2005, 00:46
Kolinus
фишка в настройках браузера может быть
майкрософт лишили лицензии на ява машину, но в настройках эксплорера можно указать - использовать для апплетов определенную ява машину

Добавлено: 04 мар 2005, 03:20
omnikar
Мне кажется врядли, если бы это были настройки броузера (кстати у меня это 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 байт, может надо как то подругому компилировать?

Добавлено: 04 мар 2005, 05:20
AiK
Explorer 5.5 уже со встроеной ява машиной

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