我一直在eclipse中研究java web applet(或者至少是我認爲是java web applet)。在我的電腦上測試成功後,我試圖將它嵌入到HTML文檔中。接下來的事情我知道,我陷入了錯誤。從我的研究中,我現在知道這些錯誤意味着我正在使用某種與Web小程序不兼容的代碼。不幸的是,我不知道代碼是什麼或者與applet不兼容,因此不知道如何解決這個問題。坦率地說,我甚至不知道從哪裏開始。我的代碼是相當複雜的:java applet和應用程序之間的區別
import java.applet.Applet;
import java.awt.*;
import java.net.*;
import java.io.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
public class DerpAHerp extends Applet implements KeyListener, MouseListener, Runnable {
int speed = 3;
int andelay = 2;
Thread animator;
Point velocity = new Point(0,0);
Point pos = new Point(50,50);
Point ppos = new Point(0,0);
int imgCount = 1;
Image[] person_S = makeAnimation(6,"person_S-","png");
Image[] person_E = makeAnimation(6,"person_E-","png");
Image[] person_W = makeAnimation(6,"person_W-","png");
Image[] person_N = makeAnimation(6,"person_N-","png");
Image personDefault = person_S[0];
Image person = personDefault;
Image offImage;
Graphics offGraphics;
Boolean moving = false;
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* @param args
*/
public void getConnection(){
String asdf = "";
try {
URL ourURL = new URL("http://dannyflax.antserve.com/d/"); //Coding Forums RSS Feed
HttpURLConnection huc = (HttpURLConnection)ourURL.openConnection();
huc.setRequestMethod("GET");
huc.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; JVM)");
huc.setRequestProperty("Pragma", "no-cache");
huc.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(huc.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
// Either do your parsing here, or append it to a StringBuffer for later use
asdf = asdf.concat(line);
}
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
catch(Exception e)
{
System.err.println("General Exception " + e);
e.printStackTrace();
}
}
public void paintFrame(Graphics g) {
g.setColor(getBackground());
g.fillRect(0, 0, person.getWidth(null),person.getHeight(null));
Graphics2D g2 = (Graphics2D) g;
if(velocity.x!=0 || velocity.y!=0){
if(velocity.x>0){
//East
if(imgCount%andelay == 0){
person = person_E[(imgCount/andelay)%person_S.length];
}
}
else if(velocity.x<0){
//West
if(imgCount%andelay == 0){
person = person_W[(imgCount/andelay)%person_S.length];
}
}
else if(velocity.y>0){
//South
if(imgCount%andelay == 0){
person = person_S[(imgCount/andelay)%person_S.length];
}
}
else if(velocity.y<0){
//North
if(imgCount%andelay == 0){
person = person_N[(imgCount/andelay)%person_S.length];
}
}
imgCount++;
}
else{
person = personDefault;
imgCount = 0;
}
g2.drawImage(person, 0, 0, this);
g2.finalize();
}
public void update(Graphics g) {
if (offGraphics == null){
if(person.getWidth(null) > 0 && person.getHeight(null) > 0)
offImage = createImage(person.getWidth(null),person.getHeight(null));
else{
offImage = createImage(1,1);
}
offGraphics = offImage.getGraphics();
paintFrame(offGraphics);
}
Color bg = getBackground();
paintFrame(offGraphics);
g.setColor(bg);
g.fillRect(ppos.x-(person.getWidth(null)/2), ppos.y-(person.getHeight(null)/2), person.getWidth(null),person.getHeight(null));
g.drawImage(person, pos.x-(person.getWidth(null)/2), pos.y-(person.getHeight(null)/2), this);
g.finalize();
}
public void paint(Graphics g) {
update(g);
}
public void init() {
//Execute a job on the event-dispatching thread; creating this applet's GUI.
addKeyListener(this);
addMouseListener(this);
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
int code = arg0.getKeyCode();
switch(code){
case 37:
//West
velocity.y = 0;
velocity.x = -1 * speed;
personDefault = person_W[0];
break;
case 38:
//North
velocity.x = 0;
velocity.y = -1 * speed;
personDefault = Toolkit.getDefaultToolkit().getImage("person_N-0.png");
break;
case 39:
//East
velocity.y = 0;
velocity.x = speed;
moving = true;
personDefault = person_E[0];
break;
case 40:
//South
velocity.x = 0;
velocity.y = speed;
personDefault = person_S[0];
break;
}
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
int code = arg0.getKeyCode();
switch(code){
case 37:
//Left
velocity.x = 0;
break;
case 38:
//Up
velocity.y = 0;
break;
case 39:
//Right
velocity.x = 0;
break;
case 40:
//Down
velocity.y = 0;
break;
}
}
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void start() {
animator = new Thread(this);
animator.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
while (Thread.currentThread() == animator) {
// Display the next frame of animation.
ppos.x = pos.x;
ppos.y = pos.y;
pos.x = pos.x + velocity.x;
pos.y = pos.y + velocity.y;
repaint();
// Delay for a while
try {
Thread.sleep(50);
} catch (InterruptedException e) {
System.out.println("Failed");
break;
}
}
}
public Image[] makeAnimation(int size, String name, String extension){
Image[] imgAr = new Image[size];
while(size>0){
String src = name + size + "." + extension;
imgAr[size-1] = Toolkit.getDefaultToolkit().getImage(src);
size--;
}
return imgAr;
}
public void stop() {
animator = null;
}
}
我不知道什麼伸出馬上是錯誤或不兼容。如果任何人都可以專門幫助我使用此代碼,或者至少讓我知道如何開始將這些代碼與Web小程序兼容,那將非常值得讚賞。我已經看過java小程序文檔,但是這很令人困惑,尤其是我迄今爲止編寫了多少代碼,因爲我在代碼中刪除了特定的東西時遇到了很多麻煩。
爲了大家:
這是HTML:
<html>
<head>
</head>
<body>
<applet
alt="Aplikacja klienta"
code=DerpAHerp.class
archive='DerpAHerp.jar'
width=500
height=500></applet>
</body>
</html>
錯誤:
當我加載網頁,我得到一個錯誤信息,如果我點擊它,我得到這個: http://puu.sh/FZmu
和控制檯說
CacheEn嘗試[http://XXXXXXXXXXXXXX.com/DerpAHerp.jar]:updateAvailable = true,lastModified = Thu Jul 05 00:50:39 EDT 2012,length = 16290
這是海報的朋友。他去睡覺了。 = \
編輯(從海報): 錯誤日誌中我得到的是如下: http://puu.sh/G6us 不知道,如果這有助於。
您可以將您看到的錯誤添加到您的問題中嗎?小應用程序部署可能有點棘手,所以這將幫助我們回答你的問題。 – Zarkonnen
在網絡瀏覽器中打開你的html頁面,看看applet是否被調用。如果沒有顯示,請打開Web瀏覽器的Java控制檯並查看錯誤堆棧是什麼。複製並粘貼您發佈的錯誤。 –
也可以顯示你在html文件中寫的一些代碼來部署applet嗎? –