Установка SDK и ошибка main
Модератор: Absurd
Помогите пожалуйста чайнику. Пытаюсь начать программировать на Яве, но не могу отладить 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
Подскажите что ему не хватает?
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
Подскажите что ему не хватает?
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Апплеты - это контролы, которые предназначены для выполнения в рамках веб-страницы. Например так:
Ты же пытаешься запустить апплет как автономное приложение.
Код: Выделить всё
<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
Так я тоже пробовал запустить, но выдается что класс name.class не найден. Т.е. класс при компиляции создается какойто битый, не рабочий. В примерах есть исходник и класс HelloWorldApplet. Я удаляю HelloWorldApplet.class из этой папки где он был вместе с исходником и html и пробую из HelloWorldApplet.java скомпелить такой же класс, но в итоге получаю класс который отличается от приведенного в примере по размеру и не работает при вызове из HelloWorldApplet.html, броузер показывает в строке статуса (при наведеннии мыши на апплет) что не может найти класс. Может я компиляцию не правильно делаю?
попробуй так:
сохрани файл под именем HelloWorld.java. (Регистр важен)
теперь
Код: Выделить всё
import java.io.*;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
теперь
Код: Выделить всё
javac HelloWorld.java
java HelloWorld
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
omnikar,
расскажу как я только что откомпилировал и как у меня заработало.
Может чем-то поможет, может наведёт на нужную мысль.
Папка D:\JavaApplet
В ней есть файл name.java
JDK у меня лежит в E:\jdk1.5.0
Пути, кажется, не настроены.
Находясь в папке D:\JavaApplet в коммандной строке пишу:
Ввожу в броузере:
Попробуй как можно точнее придерживаться этой процедуры, если не заработает - пиши
расскажу как я только что откомпилировал и как у меня заработало.
Может чем-то поможет, может наведёт на нужную мысль.
Папка 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);
} }
Пути, кажется, не настроены.
Находясь в папке D:\JavaApplet в коммандной строке пишу:
Создаю в той же папке файл test.html:e:\jdk1.5.0\bin\javac D:\JavaApplet\name.java
Код: Выделить всё
<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
Попробуй как можно точнее придерживаться этой процедуры, если не заработает - пиши

кстати.
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.
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.
Спасибо 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
удается нормально
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
удается нормально
фишка в настройках браузера может быть
майкрософт лишили лицензии на ява машину, но в настройках эксплорера можно указать - использовать для апплетов определенную ява машину
майкрософт лишили лицензии на ява машину, но в настройках эксплорера можно указать - использовать для апплетов определенную ява машину
В SAD - все в SAD.
Мне кажется врядли, если бы это были настройки броузера (кстати у меня это 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 байт, может надо как то подругому компилировать?
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 байт, может надо как то подругому компилировать?
Explorer 5.5 уже со встроеной ява машиной
версии 1.1
версия 1.4Запустил: C:\j2sdk1.4.1_07\bin\javac
И чего вы хотите от бедного ослика ИЕ?
В FireFox со свежим плагином (1.5) всё нормально работает. Отображает 000 Hello World!
Даже самый дурацкий замысел можно воплотить мастерски