0

我在我的程序中使用bluecove图书馆。
通过eclipse运行程序时,一切正常。我现在正在尝试部署我的程序,并且在这篇文章之后我正在使用 fat-jar。
当我运行 jar 文件(由 fat-jar 创建)时,找不到该库,并且BlueCove libraries not available由于这一行而出现异常local = LocalDevice.getLocalDevice();

在 fat-jar 窗口中,我还尝试添加bluecove-2.1.0.jar到该Class-Path位置,以及路径\src\JoJoServer\bluecove-2.1.0.jar
我还尝试将 bluecove 的 jar 文件放在不同的文件夹中,例如 src 或外部文件夹。

虽然我知道不建议这样做,但我尝试了 One-Jar 的选项,但它没有帮助。

要运行 jar(由 fat jar 创建的),我只需双击该文件。
我错过了什么?

这是整个代码:

import java.io.IOException;
import javax.bluetooth.BluetoothStateException;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.StreamConnectionNotifier;

@Override
public void run() {
    // retrieve the local Bluetooth device object
    LocalDevice local = null;
    StreamConnectionNotifier notifier;
    StreamConnection connection = null;

    // setup the server to listen for connection
    try {
        local = LocalDevice.getLocalDevice();
        local.setDiscoverable(DiscoveryAgent.GIAC);

        UUID uuid = new UUID("0000110100001000800000805F9B34FB", false);
        System.out.println(uuid.toString());

        String url = "btspp://localhost:" + uuid.toString() + ";name=RemoteBluetooth";
        notifier = (StreamConnectionNotifier)Connector.open(url);
    } catch (BluetoothStateException e) {
        System.out.println("Bluetooth is not turned on.");
        e.printStackTrace();
        return;
    }

    // ...
}

在此处输入图像描述

4

1 回答 1

0

我不知道你的问题可能是什么,但我已经尝试了这个过程并且一切正常,所以只是我所做的总结。也许你会通过它来解决它......

我不明白发布的代码如何是完整的,我看不到类定义。:) 所以我已经将它修改为 main 方法,它既可以在 Eclipse 中工作,也可以通过运行 FatJar 生成的 JAR 来工作。

BTTest类的修改代码:

package test;

import java.io.IOException;
import javax.bluetooth.BluetoothStateException;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.StreamConnectionNotifier;

public class BTTest {

    public static void main(String[] args) throws Exception{
        // retrieve the local Bluetooth device object
        LocalDevice local = null;
        StreamConnectionNotifier notifier;
        StreamConnection connection = null;

        // setup the server to listen for connection
        try {
            local = LocalDevice.getLocalDevice();
            local.setDiscoverable(DiscoveryAgent.GIAC);

            UUID uuid = new UUID("0000110100001000800000805F9B34FB", false);
            System.out.println(uuid.toString());

            String url = "btspp://localhost:" + uuid.toString()
                    + ";name=RemoteBluetooth";
            notifier = (StreamConnectionNotifier) Connector.open(url);
        } catch (BluetoothStateException e) {
            System.out.println("Bluetooth is not turned on.");
            e.printStackTrace();
            return;
        }

        // ...
    }
}

为了运行或生成它,我刚刚将 bluecove 库放在构建路径中,并用一种​​简单的方法创建了 fat jar:http: //oi60.tinypic.com/vg1jpt.jpg

从命令行启动生成的 jar:

D:\testProjects\bttest>java -jar bttest_fat.jar
BlueCove version 2.1.0 on winsock
0000110100001000800000805f9b34fb
BlueCove stack shutdown completed

您可以发布您的流程的不同之处吗?

于 2014-11-02T10:37:32.060 回答