有没有办法确定只给出jar文件的java applet的起点?我正在尝试创建一个网站,我可以上传applet的jar文件,然后使用类似于以下内容的方式播放。
<object type="application/x-java-applet" height="450" width="450">
<param name="code" value="<? echo $startingClass; ?>" />
<param name="archive" value="<? echo $jarUrl; ?>" />
Applet failed to run.
</object>
我得到的小程序没有正确的清单或jnlp文件。我已经尝试使用jar -tvf'jarfile.jar'来获取jar文件中所有类的列表,但无法确定哪一个是入口点。
感谢任何帮助!
答案 0 :(得分:1)
听起来很复杂。我认为这是必要的:
<object>
标记。答案 1 :(得分:1)
..但无法确定哪一个是入口点。
使用类似:
if (exampleOfClass instanceof Applet) { // We're good to go!...
答案 2 :(得分:0)
以下是基于其他评论的部分解决方案,但我遇到了一个问题,即并非所有applet的子类都被识别(How can identify Applet subclasses from a Jar file?)。该程序将打印出Jar文件中作为Applet
的子类的类。其中一个类(可能是派生程度最高的类)是入口点。
import java.applet.Applet;
public class JarAppletIdentifier
{
public static void main(String [] args)
throws Exception
{
for(String class_name : args) {
class_name = class_name.replace(".class", "");
Class<?> c = Class.forName(class_name);
if(Applet.class.isAssignableFrom(c))
System.out.println(class_name);
}
}
}
此片段需要jar文件中的类列表作为参数。
使用linux,可以从jar文件中读取参数并使用
进行解析// prints out, eg.
// pac.kage.Main.class
// pac.kage.Other.class
// user.pac.kage.SomeClass.class
jar_classes=$(jar -tf example.jar |
grep .class | grep -v "\\$" | grep -v "^\." | sed 's/\//\./g')
然后,您可以使用
将此结果传递给程序echo $jar_classes | xargs java -classpath "example.jar" JarAppletIdentifier