gpt4 book ai didi

java - 网络论坛小程序可以在小程序查看器中运行,但不能在浏览器中运行

转载 作者:行者123 更新时间:2023-12-01 13:40:13 24 4
gpt4 key购买 nike

我在使用我已经开发了一段时间的嵌入式小程序时遇到了问题。小程序的 jar 已签名并授予所有权限,并且它在小程序查看器中运行得很好。当在浏览器中加载时,我的小程序应该在的位置只有一个带有错误 Logo 的空白框。单击时,它返回“java.lang.invocacytargetexception”。我使用基本的 HTML 格式来嵌入小程序。这是我用来显示它的 HTML 代码:

<html>
<body background="BG.png">

<a href="index.html">Back to the index</a>

<center><h1>Web Forum</h1></center>
<center><table border = "0">

<tr>
<td><center><h3>Forums</h3></center></td>
<td width = 25></td>
<td width = 225><center><h3>Chatbox</h3></center></td>
</tr>

<tr>
<td><center><applet
code=Topics.class
archive=Topics.jar
width=750
height=1000 ><PARAM name="permissions" value="sandbox"></PARAM>
</applet></center></td>

<td width = 25></td>

<td width = 225 bgcolor = #00FF00><center><h3>Coming Soon</h3></center></td>
</tr>

</table></center>
</Body>
</Html>

这是 Java 控制台转储线程列表:

Dump thread list ...
Group main,ac=19,agc=2,pri=10
main,5,alive
traceMsgQueueThread,5,alive,daemon
Timer-0,5,alive
AWT-Shutdown,5,alive
AWT-Windows,6,alive,daemon
Java Plug-In Pipe Worker Thread (Client-Side),5,alive,daemon
AWT-EventQueue-0,6,alive
SysExecutionTheadCreator,5,alive,daemon
MemoryCache-DelayedCleanup,5,alive,daemon
CacheMemoryCleanUpThread,5,alive,daemon
Browser Side Object Cleanup Thread,5,alive
JVM[id=1]-Heartbeat,5,alive,daemon
Group Plugin Thread Group,ac=4,agc=0,pri=10
AWT-EventQueue-1,6,alive
Image Fetcher 0,8,alive,daemon
TimerQueue,5,alive,daemon
SysExecutionThead,5,alive,daemon
Group http://25.2.202.42/-threadGroup,ac=4,agc=0,pri=4
Applet 1 LiveConnect Worker Thread,4,alive
AWT-EventQueue-2,4,alive
TimerQueue,4,alive,daemon
ConsoleTraceListener,4,alive,daemon
Done.

这是签名的 jar 的 list :

Manifest-Version: 1.0

Name: .classpath
SHA-256-Digest: IhqMeyTH+t/Wtxr+NP6B1f5GapLwQ67HJhYQ7UM+kA0=

Name: .project
SHA-256-Digest: Lw9C+yAb3p1vC6m2pwcjhv8TB1ET8xOYjM2sFlgIjIw=

Permissions: all-permissions
Codebase: http://25.2.202.42/

我认为我的代码本身没有理由导致错误,但这里只是以防万一:

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import java.applet.*;
import java.io.*;


@SuppressWarnings("serial")
public class Topics extends Applet {

String name;
String topics;
String paragraphs;
//reading file for existing posts
String fileread = "Topics.txt";
static String line = null;
{
try {
FileReader fileReader =
new FileReader(fileread);

BufferedReader bufferedReader =
new BufferedReader(fileReader);

while((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}

bufferedReader.close();
}
catch(FileNotFoundException ex) {
System.out.println(
"Unable to open file '" +
fileread + "'");
}
catch(IOException ex1) {
System.out.println(
"Error reading file '"
+ fileread + "'");

}
}
static String display = line;

JPanel topicPanel;
JLabel title, username, topic, paragraph, topicsTitle, dtopicsTitle;
JTextField nameField, topicField;
JButton submitButton, topicrefreshButton;
JTextArea paragraphArea, topicArea;


public void init() {
final JPanel topicGUI = new JPanel();
topicGUI.setLayout(null);

setBackground(Color.GREEN);

setVisible(true);

// JLabels

JLabel title = new JLabel(" Make A Post ");
title.setSize(150, 25);
title.setFont(new Font("Serif", Font.PLAIN, 25));
title.setHorizontalAlignment(0);
add(title);


JLabel username = new JLabel("Username: ");
username.setSize(70, 15);
username.setHorizontalAlignment(0);
add(username);

// JTextField

nameField = new JTextField(8);
nameField.setSize(150, 18);
add(nameField);

// JLabel

JLabel topic = new JLabel("Topic: ");
topic.setSize(40, 15);
topic.setHorizontalAlignment(0);
add(topic);

// JTextField

topicField = new JTextField(8);
topicField.setSize(180, 18);
add(topicField);


//JLabel

JLabel paragraph = new JLabel(" Paragraph: ");
paragraph.setSize(70, 15);
paragraph.setHorizontalAlignment(0);
add(paragraph);

// JTextAreas

paragraphArea = new JTextArea(8, 5);
paragraphArea.setSize(700, 100);
paragraphArea.setLineWrap(true);
paragraphArea.setEditable(true);
add(paragraphArea);


// JButton

JButton submitButton = new JButton("SUBMIT");
submitButton.setSize(100, 30);
submitButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

name = nameField.getText();
topics = topicField.getText();
paragraphs = paragraphArea.getText();



display ="\n" + "\t" + name + " - " + "\n" + "\t" + topics + " : " + "\n" + paragraphs + display + "\n";

topicField.setText("");
paragraphArea.setText("");

//writing new info to file
String fileName = "Topics.txt";

try {
FileWriter fileWriter =
new FileWriter(fileName);

BufferedWriter bufferedWriter =
new BufferedWriter(fileWriter);

bufferedWriter.write(display);

bufferedWriter.close();
}
catch(IOException ex) {
System.out.println(
"Error writing to file '"
+ fileName + "'");
}
topicArea.setText(display);
}
});


add(submitButton);
JLabel dtopicsTitle = new JLabel(" Topics: ");
dtopicsTitle.setLocation(170, 3);
dtopicsTitle.setSize(150,30);
dtopicsTitle.setFont(new Font("Serif", Font.PLAIN, 25));
dtopicsTitle.setHorizontalAlignment(0);
add(dtopicsTitle);


topicrefreshButton = new JButton("Refresh Topics");
topicrefreshButton.setLocation(250, 30);
topicrefreshButton.setSize(100, 30);
topicrefreshButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {

topicArea.setText(display);

}
});
add(topicrefreshButton);


topicArea = new JTextArea(40, 64);
topicArea.setSize(650, 430);
topicArea.setLineWrap(true);
topicArea.setEditable(false);
topicArea.setText(display);
add(topicArea);
JScrollPane topicScroll = new JScrollPane(topicArea);
topicScroll.setSize(650,430);
add(topicScroll);


}
}

感谢您提供的任何支持。

最佳答案

AppletFile 就像油和水一样混合(即“不是”)。

不仅任何 File 对象不会指向您期望的位置(它们指向用户的本地文件系统,而不是服务器),而且小程序需要经过数字签名并受信任,然后才能使用文件。

Applet 通常通过 URL 访问资源。如果 URL 可以相对于小程序的代码库、文档库或类路径形成,则它可以保持沙箱状态并仍然可以工作。否则它就需要被信任。

其他提示

  1. 确保Java Console配置为针对小程序和 JWS 应用程序显示。如果默认级别没有输出,请将其提高并重试。
  2. catch (Exception e) { .. 形式的代码更改为 catch (Exception e) { e.printStackTrace();//非常有用! ..
  3. Java GUI 可能必须在多种平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于元件的精确放置。要组织组件以获得强大的 GUI,请使用布局管理器,或 combinations of them ,以及 white space 的布局填充和边框.
  4. 不要将 Swing 组件与 AWT 组件混合使用。 (使用 JApplet 而不是 Applet。)

关于java - 网络论坛小程序可以在小程序查看器中运行,但不能在浏览器中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20876046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com