jnlp 运行依赖库的函数

问题描述

我有一个运行依赖函数SwingWorker

public class JarRunnerWorker extends SwingWorker<Void,Void> {

    private JnlpApp jnlpApp;

    public JarRunnerWorker(){}

    @Override
    protected Void doInBackground() {
        try {
            System.out.println("***  running jar  ***");
            jnlpApp = com.asd.bsign.App.startForJnlp();
            jnlpApp.run();
        } catch (Exception e) {
            e.printstacktrace();
        }
        
        return null;
    }

    public void setThreadPillFalse(){
        jnlpApp.setThreadPillFalse();
    }

Maven 依赖项和从 pom.xml 构建:

        <dependency>
            <groupId>com.asd.bsign</groupId>
            <artifactId>bsignclient</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>
                            ${project.build.directory}/libs
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>libs/</classpathPrefix>
                        <mainClass>com.bermuda.App</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

功能在 IDE 和我的 jar 中运行良好(jar 和 libs 在同一文件夹中)。

这是我的 jnlp 文件添加了库中的所有 jar):

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://localhost:8080/bsign/" href="bsign.jnlp">
    <information>
        <title>Jnlp Testing</title>
        <vendor>bermuda</vendor>
        <homepage href="http://localhost:8080/bsign/" />
        <description>jnlp Testing</description>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.6+" />
        <jar href="bsignclient.jar" />

        <jar href="libs/commons-discovery-0.2.jar" />
        <jar href="libs/commons-io-2.8.0.jar" />
        <jar href="libs/commons-logging-1.1.1.jar" />
        .
        .
        .

    </resources>
    <application-desc main-class="com.bermuda.App" />
</jnlp>

当我运行 jnlp 时,jnlp 执行 System.out.println("*** running jar ***"); 但它不起作用,当我运行 setThreadPillFalse 时我得到 NullPointerException

我们可以这样认为 JnlpApp 类:

public class JnlpApp implements Runnable{
    
    private boolean pill;


    public JnlpApp(){
        pill = true;
    }

    @Override
    public void run() {
        while(pill){
            System.out.println("Doing some job");
            Thread.sleep(5000);
        }

    }

    public void setThreadPillTrue(){
        connectionMonitor.setPill(true);
    }

    public void setThreadPillFalse(){
        connectionMonitor.setPill(false);
    }

}

然后 startForJnlp 创建一个 JnlpApp 并返回它。

如何从 jnlp 运行此函数

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)