Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[freebsd] étrangeté avec java

2 réponses
Avatar
patpro ~ patrick proniewski
Bonjour,

Depuis des années, j'ai une sonde Munin qui agrège des mesures de
températures. Ces mesures sont obtenues à partir d'une sonde physique
Maxim Dallas (iButton + 1Wire) branchée sur un adaptateur série.

Comme depuis un bon moment le programme bricolé en C que j'utilisais ne
fonctionne plus, je me suis rabattu sur un "truc" en java, officiel et
tout et tout
(<http://www.maxim-ic.com/products/ibutton/software/1wire/1wire_api.cfm>)

Ce truc en java a cessé de fonctionner tout à fait spontanément,
mercredi 8, à 5h du matin.

À l'origine, la commande lancée par la sonde munin était :

cd /usr/local/bin && \
/usr/local/bin/java \
-classpath /usr/local/jdk1.6.0/jre/lib/ext/OneWireAPI.jar:. \
ReadTemp

Cette commande a donc totalement cessé de fonctionner, sans raison
externe visible. Le message d'erreur obtenu n'est pas très parlant :

WARNING: Could not load serial comm API for pure-Java DS9097U adapter:
java.lang.NoClassDefFoundError: com/dalsemi/onewire/adapter/SerialService

En tâtonnant et après quelques expérimentations à base de truss entre
autre, je suis parvenu à faire refonctionner la commande en ajoutant
moult arguments :

cd /usr/local/bin && \
/usr/local/bin/java \
-Djava.library.path=/usr/local/jdk1.6.0/jre/lib/i386/ \
-classpath
/usr/local/jdk1.6.0/jre/lib/ext/OneWireAPI.jar:/usr/local/jdk1.6.0/jre/li
b/ext/RXTXcomm.jar:. \
ReadTemp

Non seulement je dois désormais préciser le chemin vers RXTXcomm.jar qui
était trouvé tout seul auparavant, mais je dois aussi forcer la valeur
de java.library.path pour que les librairies (.so) soient trouvées.
La modification la plus récente sur un de ces fichiers remonte à plus
d'un an.

Qu'est ce qui a pu changer dans mon système pour qu'un matin à 5h, sans
aucune intervention de ma part, le java de mon FreeBSD ne trouve plus
ses petits ?

Je n'ai pas de crontab à cette heure, peu de choses qui tournent...

patpro

--
A vendre : KVM IP 16 ports APC
http://patpro.net/blog/index.php/2008/01/12/133

2 réponses

Avatar
F. Senault
Le 09 février à 15:38, patpro ~ patrick proniewski a écrit :

java.lang.NoClassDefFoundError: com/dalsemi/onewire/adapter/SerialService

Qu'est ce qui a pu changer dans mon système pour qu'un matin à 5h, sans
aucune intervention de ma part, le java de mon FreeBSD ne trouve plus
ses petits ?



La variable d'environnement JAVA_HOME de l'utilisateur qui lance la
commande ?

A+

Fred
--
Yes, Java is so bulletproofed that to a C programmer it feels like
being in a straightjacket, but it's a really comfy and warm
straightjacket, and the world would be a safer place if everyone was
straightjacketed most of the time. (Mark Hughes in the SDM)
Avatar
patpro ~ patrick proniewski
In article <19qu9gpgmppu9$,
"F. Senault" wrote:

Le 09 février à 15:38, patpro ~ patrick proniewski a écrit :

> java.lang.NoClassDefFoundError: com/dalsemi/onewire/adapter/SerialService

> Qu'est ce qui a pu changer dans mon système pour qu'un matin à 5h, sans
> aucune intervention de ma part, le java de mon FreeBSD ne trouve plus
> ses petits ?

La variable d'environnement JAVA_HOME de l'utilisateur qui lance la
commande ?



tous les users que j'ai testés on JAVA_HOME non défini, y compris celui
qui lance la commande.

Par ailleurs pour être parfaitement exhaustif, dans mes tests j'ai aussi
vérifié le fonctionnement physique de ma sonde sur une autre machine
(Mac OS X), et j'ai rebooté le freebsd pour être sûr de ne pas avoir à
faire à un problème de détection sur le port série, ou à un problème de
corruption non persistante de mon environnement. Sans succès bien sûr.

patpro

--
A vendre : KVM IP 16 ports APC
http://patpro.net/blog/index.php/2008/01/12/133