【问题标题】:Is there a way to start a specific java class from html href URI?有没有办法从 html href URI 启动特定的 java 类?
【发布时间】:2022-01-14 22:09:11
【问题描述】:

场景是:我正在尝试创建访问PhET 离线模拟的网页。他们有 HTML5 模拟,非常好,使用浏览器在我的本地机器上运行没有问题;和需要java的java模拟。相关的 Java 模拟被打包在一个 jar 文件中。例如,四个核物理模拟被打包在一个名为“nuclear-physics_all.jar”的 jar 文件中。

解压这个jar文件,我可以看到一个文件“jar-launcher.properties”,它定义了如果我直接运行java -jar nuclear-physics_all.jar可以选择什么。文件内容为:

$ more jar-launcher.properties 
#created by edu.colorado.phet.buildtools.java.JavaBuildCommand
#Fri Aug 09 20:00:55 MDT 2013
project.name=nuclear-physics
project.flavor.alpha-decay.title=Alpha Decay
project.flavor.radioactive-dating-game.mainclass=edu.colorado.phet.nuclearphysics.RadioactiveDatingGameApplication
project.flavor.beta-decay.args=
project.flavor.radioactive-dating-game.title=Radioactive Dating Game
project.flavor.nuclear-fission.args=
project.flavor.nuclear-fission.title=Nuclear Fission
project.flavor.beta-decay.title=Beta Decay
project.flavor.alpha-decay.args=
project.flavor.radioactive-dating-game.args=
project.flavor.nuclear-fission.mainclass=edu.colorado.phet.nuclearphysics.NuclearFissionApplication
project.flavor.beta-decay.mainclass=edu.colorado.phet.nuclearphysics.BetaDecayApplication
project.flavor.alpha-decay.mainclass=edu.colorado.phet.nuclearphysics.AlphaDecayApplication

使用命令行我可以在这个 jar 文件中启动一个模拟(例如,“Alpha Decay”),而不是选择器: java -cp ./nuclear-physics_all.jar edu.colorado.phet.nuclearphysics.AlphaDecayApplication

这是我的问题:
在模拟列表中,这四个模拟(阿尔法衰减、贝塔衰减、核裂变、放射性约会游戏)分别列出,我希望完全启动一个用户点击。但是在网页中(离线版本,所以 uri 将以 file:// 开头)我只能使用 href="file:///<path>/nuclear-physics_all.jar" 这将启动选择器而不是我想要的模拟。有没有办法使用文件 URI 启动一个模拟(类)?

【问题讨论】:

    标签: java href classpath


    【解决方案1】:

    一个 hack'ish 解决方案:显然,您可以在您的设置中运行一个 JAR 文件,而无需参数。该 JAR 文件配置为调用特定功能。

    所以:

    • 提取该 JAR 文件
    • 在清单中设置一个不同的主类,见for details
    • 根据修改后的内容构建一个新的 JAR 文件
    • 重复

    换句话说:诀窍在于您可以“运行”一个 JAR 文件,因为您指定它应该调用哪个类。当您知道需要哪些主类时,您可以复制 JAR,只需调用不同的主类即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2020-08-11
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多