Привет и Java у нас есть малина Pi

Итак, я работаю над проектом java для моей малины pi, и я хочу создать услугу bonjour в java.

Итак, когда я кодирую на своем mac, у меня есть импорт:

import com.apple.dnssd.DNSSD;
import com.apple.dnssd.DNSSDException;
import com.apple.dnssd.DNSSDRegistration;
import com.apple.dnssd.DNSSDService;
import com.apple.dnssd.RegisterListener;

Однако, когда я экспортирую свое приложение и пытаюсь запустить на моем малине pi, я получаю сообщение об ошибке:

java.lang.NoClassDefFoundError: com/apple/dnssd/RegisterListener

Очевидно, что при выполнении на моем mac эти файлы находятся на моем пути к классам и могут быть использованы, но они не находятся на малине pi. Я попытался оглянуться на банку с этими файлами, но ничего не работает. Я понимаю, что есть некоторые ресурсы по адресу: http://www.macosforge.org/, но я не уверен что мне действительно нужно?

UPDATE:

Итак, я прошел мимо ошибки выше. Я загрузил Posix mDNSResponder из http://www.macosforge.org/. Затем я скопировал это на мой малиновый пи. Затем в папке mDNSPosix я выполнил makefile:

$ make os=linux

Примечание: мне пришлось установить bison и flex для этого:

$ sudo apt-get install bison
$ sudo apt-get install flex

Как только make-файл завершился, я побежал:

$ make os=linux install

и

$ make os=linux Java

Это создало dns_sd.jar, у которого есть все com.apple.dnssd.*.

Итак, я добавил это в свой проект (на этот раз на машине Windows, чтобы убедиться, что классы были включены из jar), и пробежал по моему pi.

Ошибка, которую я получаю сейчас:

java.lang.UnsatisfiedLinkError: no jdns_sd in java.library.path
    java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    java.lang.Runtime.loadLibrary0(Runtime.java:845)
    java.lang.System.loadLibrary(System.java:1084)
    com.apple.dnssd.AppleDNSSD.<clinit>(DNSSD.java:544)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:186)
    com.apple.dnssd.DNSSD.<clinit>(DNSSD.java:477)

ОБНОВЛЕНИЕ 2:

Итак, я исправил эту ошибку, переместив все, что было создано в папке mDNSPoisx/build/prod, в /usr/lib/

Когда я пытаюсь запустить свой код, я получаю следующую ошибку:

com.apple.dnssd.AppleDNSSDException: DNS-SD Error -65563: SERVICENOTRUNNING
    at com.apple.dnssd.AppleService.ThrowOnErr(DNSSD.java:652)
    at com.apple.dnssd.AppleRegistration.<init>(DNSSD.java:772)
    at com.apple.dnssd.AppleDNSSD._register(DNSSD.java:571)
    at com.apple.dnssd.DNSSD.register(DNSSD.java:241)

Я попробовал запустить демон, как описано в файле readme.txt:

  

«make install» завершается выполнением сценария запуска (обычно   «/etc/init.d/mdns start»), чтобы запустить демон. Вы не должны   необходимо перезагрузить, если вы действительно этого не хотите.

Но я все равно получаю ту же ошибку, любые идеи?

ОБНОВЛЕНИЕ 3:

Я попробовал перезапустить демон mDNS и хвост журналов:

$ sudo sh /etc/init.d/mdns restart; tail -f /var/log/daemon.log 

Выводится следующее:

Feb 10 00:20:01 raspberrypi mDNSResponder: mDNSResponder (Engineering Build) (Feb  9 2013 17:52:27) starting
Feb 10 00:20:01 raspberrypi mDNSResponder: mDNS_AddDNSServer: Lock not held! mDNS_busy (0) mDNS_reentrancy (0)
Feb 10 00:20:01 raspberrypi mDNSResponder: mDNSResponder (Engineering Build) (Feb  9 2013 17:52:27) stopping

Любые идеи о том, что означает Lock not held! '?

3 голоса | спросил Matthew Wilson 9 FebruaryEurope/MoscowbSat, 09 Feb 2013 20:18:59 +0400000000pmSat, 09 Feb 2013 20:18:59 +040013 2013, 20:18:59

1 ответ


2

Построение родных библиотек, скорее всего, будет разочаровывающим.

Рассмотрим только использование http://jmdns.sourceforge.net/. Это чистая реализация Java bonjour.

ответил Thorbjørn Ravn Andersen 11 J0000006Europe/Moscow 2013, 01:59:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132