Как запустить Java-апплет в Mac OS 10.6.6 - PullRequest
1 голос
/ 29 марта 2011

Я нахожусь в моем первом классе программирования, и теперь я заканчиваю семестр. У меня есть онлайн-портфолио, где я делюсь своими достижениями в колледже. На этом этапе семестра я хотел бы загрузить несколько простых апплетов, которые я создал, в мое онлайн-портфолио. Мое портфолио размещено на Weebly.com. Я попытался загрузить файлы на хост-сайт и использовать простые теги для запуска апплета в HTML. Я совершенно уверен, что я получаю доступ к файлам, используя правильные каталоги. Но прежде чем мы сделаем какие-либо выводы, я решил запустить апплеты локально, чтобы убедиться, что я все делаю правильно. Я на MacBook Pro под управлением ОС 10.6.6. В настройках Java мои версии Java SE - это 64-разрядная версия Java SE 6 и 32-разрядная версия Java SE 6. Моя версия плагина 1.6.0 (находится в / System / Library / Java / JavaVirtualMachines). Это единственные версии, которые у меня есть на моей машине. Мое исследование говорит мне, что у меня могут быть разногласия по версии. Некоторые форумы предлагают вернуться к плагину версии 1.5 (хотя я понятия не имею, как). Теперь я уверен, что Apple обновила Safari до 64-битной версии. У меня Eclipse установлен на 1.6 тоже. Мне кажется, что все на одной странице.

И да, я прочитал все связанные с этим вопросы снова и снова. Большинство из них сейчас немного устарели.

Вот мой код апплета:

/** 
 * Class NightScene - Draws a night scene (just for fun). 
 *  
 * @author Alex Stout 
 * @version February 8, 2011 
 */ 
package lab05_1; 
import java.awt.*; 
import javax.swing.*; 

public class NightScene extends JApplet 
{ 
        /** 
         * Paint method for applet. 
         *  
         * @param  g   the Graphics object for this applet 
         */ 
        public void paint(Graphics g) 
        { 
            g.setColor(Color.BLUE.darker().darker().darker());
            g.fillRect(0,0, this.getWidth(), this.getHeight());

            this.drawMoon(g);

            this.drawStars(g);

            this.drawHorizon(g);

        }
        public void drawStars(Graphics h)
        {   
            for (int i = 0 ; i <= this.getWidth()*5; i++)
            {
                int x = (int)(Math.random()*this.getWidth());
                int y = (int)(Math.random()*this.getHeight());

                h.setColor(Color.WHITE);
                h.fillOval (x, y, (int) (Math.random()*3)+1, (int) (Math.random()*3)+1);
            }

        }
        public void drawMoon(Graphics j)
        {
            int x = (int)(Math.random()*(this.getWidth()-200)+50);
            int y = (int)(Math.random()*(this.getHeight()-200)+50);

            j.setColor(Color.YELLOW.brighter().brighter());
            j.fillOval (x, y, this.getWidth()/10, this.getWidth()/10);
            j.setColor (Color.BLUE.darker().darker().darker());
            j.fillOval (x-(this.getWidth()/100), y-(this.getWidth()/100), this.getWidth()/10, this.getWidth()/10);
        }   

        public void drawHorizon(Graphics k)
        {
            int xi = 0;
            int xj = this.getWidth();
            int yj = this.getHeight();
            int rh = this.getHeight()-this.getHeight()/8;

            for (int i=0; i < xj; i++)
            {
                k.setColor(Color.BLACK);
                k.drawLine(xi, yj, xi, rh);

                k.setColor(Color.BLUE);
                if(Math.random()<0.50)
                {
                    k.drawLine(xi++, rh++, xi, rh++);
                }
                else
                {
                    k.drawLine(xi++, rh--, xi, rh--);
                }

            }           
        }
}    

Вот мой HTML-код:

<html>
<Applet code = NightScene.class codebase = "." width = "400" height = "400">
</Applet>
</html>

Вот вывод консоли Java:

Java Plug-in 1.6.0_24
Using JRE version 1.6.0_24-b07-334-10M3326 Java HotSpot(TM) 64-Bit Server VM
User home directory = /Users/myUserName

Некоторые люди предлагают использовать codebase = "." поэтому я попробовал это безрезультатно. Это не работает с или без него. Я попытался ввести полный путь к каталогу, но безуспешно. Я пробовал цитаты и никаких кавычек вокруг названия класса. Я попробовал с и без .class на конце. Я попытался создать подкаталог lab05_1, потому что это имя пакета в коде. Неудачно. И файл класса, и файл html находятся в одной папке на рабочем столе. Файл класса является копией исходного файла, созданного в Eclipse, но он имеет то же имя, поэтому я не думаю, что это может вызвать какие-либо проблемы в разных каталогах.

Я не знаю, что еще делать. Пожалуйста помоги! Это раздражало меня в течение недели. Я часами часами занимался чем-то таким простым.

Ответы [ 2 ]

1 голос
/ 04 мая 2011

Может быть, сейчас и старая. Я только что нашел эту страницу, пытаясь ответить на другой вопрос, но, судя по вашему оригинальному HTML и ссылке ORacle, у вас не было кавычек вокруг имени файла класса. Подозреваю, что это могло быть корнем проблемы. По сути, это, пожалуй, то, к чему стремится Spong. Я просто не заметил упоминаний о кавычках, которые бросились мне в глаза ...

1 голос
/ 29 марта 2011

У меня нет Mac, чтобы проверить это, но если вы измените свой HTML-файл, он должен работать - вам не хватает имени пакета для NightScene.class.

<html>
  <Applet code="lab05_1.NightScene.class" width="400" height="400"/>
</html>

Ссылка Oracle для тега APPLET: здесь .

С этой страницы:

CODE = appletFile

Этот атрибут REQUIRED дает имя файла, который содержит скомпилированный подкласс апплета апплета.Этот файл относится к базовому URL апплета.Это не может быть абсолютным.Должен присутствовать один из CODE или OBJECT.Значение appletFile может иметь форму classname.class или форму packagename.classname.class .


РЕДАКТИРОВАТЬ: На случай, если неясно, каталог должен быть выложен так:

    +-top-level/
      |
      +-lab05_1/
      | |
      | +-NightScene.class
      |
      +-test.html
...