我有一个第三方小程序,需要JRE v1.5_12才能正常工作.用户正在安装JRE v1.6.07或更高版本.它曾经是1.5及以下版本,我可以在机器上有多个JRE,并指定使用哪一个 - 但是1.6的apepars要被打破.如何告诉浏览器我想使用v1.5_12而不是最新安装的?
有一个名为Slick 2D(http://slick.cokeandcode.com/)的2D java图形库似乎被一堆独立游戏(主要是applet)使用,但文档有点缺乏.有没有人知道这个lib的任何好教程?
我正在设计一个使用java applets的心理学实验.我必须使我的Java小程序全屏.这样做的最佳方式是什么,我该怎么做.
因为我没有使用java applets 3年(我最后一次使用它是一个课程作业:))我忘记了大多数概念.我用Google搜索并发现链接: Dani网站
但是在上面链接中描述的方法中,你必须在applet中放置一个JFrame,我不知道该怎么做.
无论我需要一个快速而肮脏的方法,因为我没有太多时间,这就是我在这里问的原因.
Thanx提前
这就是Java站点www.java.com所说的:
"KVM是移动设备的虚拟机,是JVM(Java虚拟机)的对应物.它用于在移动设备上运行用Java技术编写的applet和应用程序.KVM必须由制造商安装.它不适用于消费者下载或安装".
现在Android有一个名为DVM(Dalvik虚拟机)的定制虚拟机.我们可以将它与KVM进行比较吗?不知道我们是否可以进一步重新编程DVM以结合KVM的功能来在Android上运行applet?同样适用于Blacberry,有可能吗?
我正在看一个经过严格调用JavaScript的签名Applet.显然,源自JavaScript的线程比使用Java直接启动的任何线程更加沙箱化.例如,如果JavaScript线程调用Applet并记录导致日志文件滚动的内容,则会引发安全性异常.直接在Applet中启动的任何线程都不会遇到此安全性异常.log4j的解决方案是使用异步appender.
但是对于其他安全性异常(例如在签名的Applet中使用Apache Axis但在JavaScript线程中),没有明显的方法来拥有一些异步线程.假设我有以下代码,如果从Java线程调用将起作用,并且如果通过JavaScript调用将失败并出现SecurityException:
public void someMethodCalledFromJavaScript() {
// Stuff that would throw a SecurityException
}
Run Code Online (Sandbox Code Playgroud)
我看到以下三个选项,但它们可能并非全部有效.为了便于讨论,请忽略执行是同步还是异步,因为这很容易管理.我很难理解安全模型的细节.以下是我的三个潜在选择:
开始一个新线程(这个甚至可以工作吗?):
public void someMethodCalledFromJavaScript() {
new Thread(new Runnable() {
public void run() {
// Stuff that would throw a SecurityException
}
}).start();
}
Run Code Online (Sandbox Code Playgroud)让Applet有一个随时可用的线程,通过JavaScript原始线程(此处高度简化的代码)触发:
private volatile boolean doit = false;
// This code is running in a Thread, started @ Applet init time
public void alwaysWaiting() {
while (true) {
if (doit) {
doit = false;
// Stuff that would throw a SecurityException
} …Run Code Online (Sandbox Code Playgroud)该javadoc的和教程有关于四个小应用程序的生命周期方法的信息(init() -> start() -> stop() -> destroy()).但他们大多用抽象语言交谈.
我正在寻找的是具体的例子,如果我把我的代码放在initvs中start,并且同样对于destroyvs ,它会有所不同stop.到目前为止我唯一发现的是教程对destroy方法的描述.它说:
注意:尽可能缩短destroy方法的实现,因为无法保证此方法将完全执行.Java虚拟机可能会在长破坏方法完成之前退出.
(我有点震惊,上面的内容不在javadoc中.)
编辑:更具体一点:任何人都可以提供浏览器+ JVM组合,在某些特定操作(切换选项卡,点击"后退"按钮等)时,调用stop但不调用destroy(或start不调用init)?
我在位于http:// localhost:8080/index.html的简单HTML页面上插入了一个Java Applet :
<applet id="applet" code="SomeCode.class" archive="lib.jar" Width="1" Height="1"></applet>
Run Code Online (Sandbox Code Playgroud)
Java Applet有一个类似于下面代码的方法:
public void PostStuffToServer() {
String server = "http://localhost:8080/PostHandler.ashx";
URL u = new URL(server);
URLConnection con = u.openConnection();
con.setDoOutput(true);
con.getOutputStream().write(stream.toByteArray());
con.connect();
}
Run Code Online (Sandbox Code Playgroud)
当我从JavaScript执行applet代码时,如下所示:
obj = document.getElementById('applet');
obj.getClipboardImageURL();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
访问被拒绝(java.net.SocketPermission 127.0.0.1:8080 connect,resolve)
似乎Java代码将域localhost解析为其等效的IP地址,因此引发了跨域安全限制.当我从http://127.0.0.1:8080/index.html执行相同的代码时,它工作正常.lib.jar文件已签名.
反正有没有避免这个?
我使用firefox版本> 3.5(3.5.,3.6.,4.*),我尝试正确指定archive和codebase属性,但它不起作用.我的applet的主要类位于archive和运行时加载的一些必要的类位于codebase.如果我只指定了archive那么applet被加载但是codebase缺少类.如果我指定的archive和codebase,则小程序无法加载.看起来applet尝试从codebase文件夹加载主类,而不是查看archive文件.
<html>
<body>
<applet width=600 height=300 code="MyClass.class"
type="application/x-java-applet;jpi-version=6"
archive="http://myurl.com/archive/myjar.jar"
codebase="http://myurl.com/classes">
no applet
</applet>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
主类位于http://myurl.com/archive/myjar.jar,运行时类位于http://myurl.com/classes.
我正在与一些人一起制作一个3D太空交易游戏,而我被指派做的其中一件事就是制作一个引导计算机的"隧道",船只穿过,隧道由用户制成的正方形飞到目的地,随着用户离目的地越来越近.
只需渲染船前点的方块,因为这是用户可见的所有内容.在前往目的地的途中,船上的计算机应该在HUD上放置方块,这些方块代表你和目的地之间的空间中的固定点,这些点在距离很小并且随着点接近飞行器而变大.

我已经开始实现这个并且似乎无法解决这个问题,主要是使用对数(Math.log10(x)等等).我试图在"对数空间"中获得船位,以帮助找出在绘制正方形时从哪个索引开始,但事实上我只能到目的地工作的距离混淆了这个问题,尤其是当你考虑到方块的数量必须动态变化以确保它们保持固定在空间中的正确位置(即,在以对数方式变换之前,方块以200左右的间隔定位).
关于这一点,我在0.0d的开始和1.0d的结束之间有一个工作实现,虽然实现不太好.无论如何,问题基本上归结为1d性质.对于此问题,任何建议都会受到赞赏,包括可能达到相同效果的解决方法或解决方案.

(此外,还有一个显示此效果的Youtube视频:http://www.youtube.com/watch?v = 79F9Nj7GgfM&t = 3m5s)
干杯,
克里斯
编辑:改写整个问题.
编辑:新的测试台代码:
package st;
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferStrategy;
import java.text.DecimalFormat;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
public class StUI2 extends JFrame {
public static final double DEG_TO_RAD = Math.PI / 180.0d;
public static final DecimalFormat decimalFormat = new DecimalFormat("0.0000");
public static …Run Code Online (Sandbox Code Playgroud) 为了保护我们的用户不受appiulet小程序的影响,我想禁用Java浏览器插件.
在测试(JRE 7)中,我注意到停用插件也会禁用Java Web Start.我们需要使用一个Web Start应用程序,因此似乎我们别无选择,只能启用浏览器插件.
这是正确的,还是有办法在不启用浏览器插件的情况下使用Web Start?
测试步骤:
在命令窗口中,我输入以下命令
出现以下错误框:

它的消息转化为
无法下载此应用程序,因为已停用Java over Internet.您可以通过Java控制面板在此系统上激活Java
我还没有看到在Java控制面板中激活"Java over Internet"的选项.当我启用浏览器插件时,可以启动Java Web Start应用程序.
如果我执行JNLP文件的本地副本,则会出现相同的错误消息
加哇人
<path to local jnlp file>
jnlp文件(略微清理):
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="https://example.com/path/to/" href="webstartapp.jnlp">
<information>
<title>...</title>
<vendor>...</vendor>
<homepage href="..." />
<description>...</description>
<description kind="short">...</description>
<description kind="tooltip">...</description>
<offline-allowed />
</information>
<security>
<all-permissions />
</security>
<resources>
<j2se version="1.7+" initial-heap-size="128m" max-heap-size="256m" />
<jar href="Client/lib/Launcher.jar" main="true" />
</resources>
<application-desc main-class="com.veda.launcher.Start">
<argument>...</argument>
<argument>*</argument>
</application-desc>
</jnlp>
Run Code Online (Sandbox Code Playgroud) applet ×10
java ×10
security ×3
javascript ×2
2d ×1
android ×1
blackberry ×1
firefox ×1
fullscreen ×1
graphics ×1
jnlp ×1
lifecycle ×1
liveconnect ×1
logarithm ×1
math ×1