Yohann Martineau, blog

Articles marqués java

maven eclipse:eclipse maven-eclipse-plugin 2.9 NullPointerException

2012-10-04 00:16:13

If you have difficulties to generate eclipse project files (.project and .classpath) from a maven project on a debian based OS, this article is for you.

While running mvn eclipse:eclipse in my peers project, I was stuck with this issue:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.872s
[INFO] Finished at: Wed Oct 03 23:39:07 CEST 2012
[INFO] Final Memory: 10M/104M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-eclipse-plugin:2.9:eclipse (default-cli) on project peers-doc: Execution default-cli of goal org.apache.maven.plugins:maven-eclipse-plugin:2.9:eclipse failed. NullPointerException -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Actually, apparently, maven automatically seeks jvm instances on a debian host (in /usr/lib/jvm) and tries to extract MANIFEST.MF file from jre/lib/rt.jar file in each jvm folder.

It should be verified, but apparently, as soon as it finds an rt.jar file without manifest, it fails with this annoying NullPointerException.

I found that my system had 4 different JVMs:

  • java-1.5.0-gcj-4.4
  • java-6-openjdk
  • java-6-sun-1.6.0.26
  • jdk1.7.0_07 (installed manually)
I found that the only installed jvm with no manifest in jre/lib/rt.jar was java-1.5.0-gcj-4.4, Thus, I removed jvm java-1.5.0-gcj-4.4 (debian package gcj-4.4-base) and it solved my issue.

Hope this helps someone...

Lien permanent
java, debian, development, english

Commentaires

peers-0.4 small is beautiful!

2010-12-15 15:24:37

After more than one year of irregular development, bug fixing and refactoring, thinking, improving, thinking again and some short nights, a new release of peers is available!

In this release, you will find a brand new GUI, still based on swing, but using native look and feel.

javasound is still employed for microphone capture and contact's voice playback.

No more external library is employed in this release. Jrtp has been replaced with a new home made RTP stack. This RTP stack has been developed with the same keep it stupid simple philosophy as peers SIP stack.

As more and more people are using peers, interoperability tests have been performed against more IPBXs, gateways, hardphones and softphones. I don't have a complete list of compatible SIP elements, but this list is growing.

Amongst new features, the ability to configure your SIP account using Edit > Accout in menu bar will probably be the most important one. It implies that peers users no longer have to modify an xml file manually before peers startup.

If you are a voip customer and your internet service provider can give you a SIP account, you can try peers now to call from your PC. Depending on your internet service provider servers configuration, you may also receive calls on your PC using peers. Some service providers also enable you to place calls from anywhere in the world using your sip account and local rates towards fixed line phones.

Lien permanent
english, development, internet service provider, java, peers, protocol

Commentaires

Rachat de sun par oracle

2009-04-20 23:27:31

Lundi 20 avril 2009, 21h45 UTC+1

Ce n'est pas dans mes habitudes de donner ma position sur ce genre d'évènement, ni même de réagir à des évènements sur internet. Mais là, je dois reconnaître que cette nouvelle est plutôt inquiétante pour la suite : Oracle est sur le point de racheter Sun.

Pour les non-initiés, Oracle est une société fabriquant et vendant des bases de données, permettant de stocker de nombreuses informations. Cette société fonctionne sur un modèle "ancien", c'est-à-dire, qu'elle conçoit ses logiciels, les produit et les commercialise. On ne peut pas vraiment dire que cette société soit aux avant-postes dans le domaine de l'open source. Domaine dans lequel Sun a brillé à plusieurs reprises (java, open office, etc.). S'il faut donner un seul exemple, open office est assez parlant je pense : une suite de logiciels de bureautique très efficace et gratuite pour tous. Une autre version payante existait pour les entreprises ou les collectivités : star office. Cette version apportait d'avantage de fonctionnalités, et probablement du support. Ce modèle était assez courant chez sun. Pour le même logiciel : une version gratuite et libre pour tous et une version fermée et payante pour les entreprises (solaris / open solaris).

Première chose : des centaines (au moins) d'ingénieurs ultra-qualifiés vont perdre leur emploi. Cela n'a évidemment rien rassurant quand on est soi-même ingénieur et que l'on se croit à l'abri du besoin, surtout lorsqu'il s'agit d'un secteur d'activité qui nous concerne directement.

De plus, ce qui est plus inquiétant globalement, et c'est probablement ce qui me pousse à réagir, c'est la perte de "l'esprit Sun". Le terme peut paraître un peu fort, voire excessif, surtout lorsqu'il s'agit d'une grosse société, certes. Mais je ne pense pas être le seul à considérer Sun comme une société qui a mis au point des technologies innovantes, qui a pris des risques, qui a eu de l'audace et qui a contribué énormément au monde de l'open source. Et ce de façon pédagogique.

Nombreuses sont les sociétés qui ont ouvert leurs technologies au monde extérieur dans le but d'être contactées par des experts apportant leurs contributions gratuitement au projet, corrigeant même directement des erreurs dans le meilleur des cas. La pédagogie apportée par Sun au travers de ses tutoriaux notamment, ne s'adressait pas aux experts, mais aux étudiants ou aux personnes se formant elle-mêmes sur leurs technologies. La cible n'est donc pas la même et l'objectif n'était probablement pas le même non plus.

Au risque de paraître encore une fois excessif, je vois Sun comme une société ayant d'avantage évolué dans l'informatique en tant que science, plutôt que sur le marché de l'informatique. Nulle société ne peut évoluer sans finances saines, certes. Mais de là à octroyer les pleins pouvoirs aux financiers, on peut se poser des questions... Quand je lis le communiqué de presse de Sun ou les différents articles de presse à ce sujet, je constate que le principal facteur ayant influencé les choix des principaux acteurs est le prix de l'action Sun. Plus exactement la différence entre le cours proposé par les acheteurs et le cours actuel de Sun. Ce cours est évidemment sujet à des variations et est déterminé par la spéculation. Estime-t-on la valeur du centimètre cube de matière grise en fonction du prix du pétrole et d'autres évènements géo-politiques ?

La valeur d'une société ne se résume pas (fort heureusement) à ses ingénieurs, mais les hommes et les femmes qui la composent sont les acteurs réels de sa vie quotidienne, les générateurs d'idées pour l'avenir de cette société et ont en principe une philosophie en commun. Lorsqu'une société se fait racheter, on tente : au mieux, de faire collaborer deux vues différentes entre elles ; en général, d'imposer des idées, des méthodologies, des contraintes.

En tant qu'ingénieur libre, on peut se demander parfois s'il est permis d'exprimer son ressenti et ses émotions relatives sans équation, sans démonstration cartésienne. Excusez-moi, une fois n'est pas coutume, de l'avoir fait à travers ce post.

Lien permanent
français, java

Commentaires

Peers 0.3 is out!

2009-03-31 22:03:42
Date originale : 2008-06-02

The latest peers release is out!

I've been working hard on this release for nights... it includes new features, such as REGISTER management. Of course this implies register-refresh and unregister management. But a register implementation would probably be useless without digest support. That's the reason why MD5 algorithm and challenges have been added in peers, as specified in RFC2617. This registration implementation has been tested against openser: the reference proxy/registrar implementation. For the moment Proxy-authenticate header has not been implemented but it should not be too complicated as it is exactly the same principle as www-authenticate header.

This release has been tested against more softphones than the previous release:

Many issues have been fixed in this release, and a new test framework has been used: TestNG. This framework is very impressive and very useful to test and track thread concurrency issues. It relies on java annotations and offers an impressive list of features. This is really a great tool.

Lien permanent
protocol, peers, java, english

Commentaires

Peers : nouveau softphone SIP

2009-03-31 22:00:52
Date originale : 2 décembre 2007

Bonjour,

Après plusieurs mois de développement, la première version de Peers est sortie ! Peers est un softphone SIP minimaliste écrit en java. Peers est donc un logiciel permettant de téléphoner d'un ordinateur à un autre sur un réseau local. Pour appeler une personne, il suffit de taper : sip:192.168.0.1 avec la bonne adresse. L'ordinateur appelé décroche automatiquement et l'appel est établi. Ensuite, l'appelé ou l'appelant peuvent raccrocher avec le bouton "hang up".

Pourquoi ?

En effet, il existe déjà d'autres piles SIP écrites en java, alors pourquoi se lancer dans cette implémentation ? Pour deux raisons. Premièrement, il n'existe à ma connaissance pas plus de deux implémentations open source en java d'une pile SIP :

  • Jain-sip, implémentée par NIST, un institut de recherche américain,
  • MjSip, implémentée par l'université de Parme.
Dans les deux cas, ces implémentations sont des implémentations complètes de la spécification de SIP : la RFC 3261, c'est-à-dire qu'il est possible de créér tous les éléments d'un réseau SIP grâce à ces implémentations : User-Agent, Proxy, Registrar, etc. Or, réaliser l'abstraction entre ces différents rôles ajoute une complexité importante aux implémentations. De plus, les ressources nécessaires dans la vie de tous les jours pour implémenter ces rôles sont très différentes. Je m'explique, un User-Agent est un softphone, c'est donc un logiciel qui va se lancer sur l'ordinateur d'un utilisateur. Cet utilisateur utilisera des fonctions éventuellement avancées au niveau media mais pas au niveau contrôle de session. SIP intervient au niveau du contrôle de sessions. Le User-Agent est en gros un logiciel client. Pour les autres rôles (Registrar, Proxy, ...) il s'agit d'implémenter des serveurs n'ayant aucune interface utilisateur et étant optimisés au maximum pour gérer un maximum de sessions en parallèle ou un maximum de messages, etc.

Pour en revenir aux autres implémentations, elles permettent donc de réaliser tous les éléments d'un réseau SIP, mais ce n'est pas le but de Peers. Le but de Peers est d'écrire un logiciel permettant le maximum d'interactions possibles avec les autres utilisateurs, et que ces fonctionnalités soient facilement évolutives. L'implémentation de Peers se veut simple. Malgré ses 10 000 lignes de code (environ), l'implémentation de peers se veut minimaliste et évolutive. C'est son évolutivité qui lui donne se volume. Le but de Peers n'est pas de devenir un serveur, mais bel et bien d'être lancé sur un poste utilisateur.

La deuxième raison est la possibilité d'apprendre par la pratique. Rien n'est plus formateur que de comparer son implémentation avec les plus réputées pour voir d'où viennent les problèmes, et ceci tout en lisant plusieurs fois les RFCs pour bien comprendre les concepts et ne pas tomber dans une implémentation uniquement empirique. SIP est pour moi un protocol nouveau, il y a un an, je ne connaissais rien à SIP.

Pour plus d'informations, vous pouvez me contacter par mail, voir ma page contact.

Lien permanent
protocol, peers, multimedia, java, internet, development, français

Commentaires

radio.blog crawler

2009-03-31 21:57:54
Date originale : 4 février 2007

Après avoir constaté à plusieurs reprises le bridage des ports utilisés par les torrents par mon fournisseur d'accès internet, j'ai décidé de réagir, à mon échelle, mais de faire quelque chose. J'ai donc développé un crawler du diffuseur de musique radio.blog qui permet de rappatrier en local les fichiers de musique stockés sur les serveurs diffusant des radio.blog. Le but est d'utiliser ce crawler pour charger le port HTTP qui n'est à priori pas bridé par mon fournissur d'accès afin de lui faire comprendre qu'il ne sert à rien de brider les débits à un endroit et pas à un autre.

Pour information mon fournisseur d'accès internet est club-internet, et je suis en zone non-dégroupée. Ce problème n'existe pas chez ce fournisseur d'accès en zone dégroupée, mais la popularité du post sur leur forum concernant ce problème est la preuve de l'existence d'un vrai problème (plus de 840 pages de posts !).

Au cas où la version normale ne marcherait pas, j'ai également mis en ligne une archive contenant directement toutes les dépendances. Une version relativement récente d'un JRE est nécessaire pour pouvoir lancer ce programme.

Lien permanent
multimedia, java, internet service provider, français

Commentaires