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

De quoi devenir fou --

5 réponses
Avatar
Olve
Bonjour,

J'ai une application web qui utilise javascript et java.
Ce n'est pas très évolué, c'est fait pour firefox et vous pouvez même
aller voir là :

http://math.univ-lille1.fr/~ramare/Jeux/Solitaire/Solitaire.html

Bon. Oui, je suis un débutant.
Maintenant, mon vrai problème est le suivant :

Je mets en place un moteur java pour utiliser lpsolve et passer sur une
programmation plus structurée. Jusque là tout va bien.
Maintenant, si je garde la version commentée
/*
public static boolean FaisableEnRatPos(){
try{
LpSolve mylp = LpSolve.makeLp(0, 10);
} catch (LpSolveException lpse){
lpse.printStackTrace();
}
return true;
}
*/ (dans Automate.java)
tout va bien. De toutes façons la fonction
FaisableEnRatPos() n'est appelée nulle part.

Mais si je décommente ce passage, j'obtiens un
----------------------------------------------------
Automate throws: Error calling method on NPObject! [plugin exception:
java.lang.reflect.InvocationTargetException].
----------------------------------------------------

La seule différence est si je commente ou décommente cette partie
*inutile* de code -- Oui, j'espère qu'un jour cette partie sera utile,
mais voilà, j'ai réduit le problème à cela -- Et suis coi.

Une idée ?

Ou une idée pour débugger ?

J'ai peut être une erreur indétectée avant qui se déclenche là --
Merci de votre patience si vous avez tenu jusqu'ici !
Amitiés,
Olivier

5 réponses

Avatar
Samuel DEVULDER
Le 03/06/2012 21:13, Olve a écrit :

Une idée ?




Oui, quand le code est dé-commenté, les dépendances sont changées (cf.
les imports). Du coup le class-loader qui ne doit être configuré que
pour la version "avec commentaires", doit avoir des problèmes pour
charger la classe qui a des dépendances non résolues.

Ou une idée pour débugger ?



Il faut regarder au niveau du classpath à mon avis.

sam.
Avatar
Olve
Le 03/06/2012 22:23, Samuel DEVULDER a écrit :
Le 03/06/2012 21:13, Olve a écrit :

Une idée ?




Oui, quand le code est dé-commenté, les dépendances sont changées (cf.
les imports). Du coup le class-loader qui ne doit être configuré que
pour la version "avec commentaires", doit avoir des problèmes pour
charger la classe qui a des dépendances non résolues.

Ou une idée pour débugger ?



Il faut regarder au niveau du classpath à mon avis.



Oh, merci --
Quand je compile une version sans firefox et une partie de ce code, ça
marche, mais firefox doit avoir du mal à lire lpsolve55j.jar (qui est
pourtant dans le même répertoire). J'investigationne et reposterai
demain peut être la correction de mon erreur !
A.O.
Avatar
Olve
La suite donc.

lpsolve donne lpsolve55.jar.
On peut en extraire un répertoire lpsolve/ qu'il suffit de mettre dans
le répertoire des autres scripts java pour que tout fonctionne, merci.

Enfin, tout fonctionne, non :/
Je n'ai plus d'erreur de NPObject etc, mais je n'ai pas dû installer
lpsolve convenablement. Si je compile le script de demo
-----------------------------------------------------------------
import lpsolve.*;

public class Demo {
public static void main(String[] args) {
try {
LpSolve solver = LpSolve.makeLp(0, 4);
solver.strAddConstraint("3 2 2 1", LpSolve.LE, 4);
solver.strAddConstraint("0 4 3 1", LpSolve.GE, 3);
solver.strSetObjFn("2 3 -2 3");
solver.solve();
System.out.println("Value of objective function: " +
solver.getObjective());
double[] var = solver.getPtrVariables();
for (int i = 0; i < var.length; i++) {
System.out.println("Value of var[" + i + "] = " + var[i]);
}
solver.deleteLp();
}
catch (LpSolveException e) {
e.printStackTrace();
}
}
}
------------------------------------------------------------------------
et que je l'execute, je n'ai aucun problème. Mais dans le script java
chargé par l'applet de ma page html, ça coince. Il y a
------
try{
cU.Alert("Going to Tests!!!");
LpSolve mylp = LpSolve.makeLp(0, 0);
cU.Alert("In FaisableEnRationnelsPositifs ... ");
} catch (LpSolveException lpse){
cU.Alert("Exception in FaisableEnRationnelsPositifs!!");
lpse.printStackTrace();
}
------------------------------------------
Je vous passe qui est cU.Alert, mais ça écrit sur la page web. À
l'exécution, j'ai bien un "Going to Tests!!!"
mais plus rien d'autre. Stop.

Et je n'arrive pas à repérer d'erreur --

ldconfig a été lancé, liblpsolve55.so est dans /usr/lib/ et dans
/usr/lib/lp_solve/.

?? Merci de votre patience !
Amitiés,
Olivier
Avatar
Samuel DEVULDER
Le 04/06/2012 23:14, Olve a écrit :

LpSolve mylp = LpSolve.makeLp(0, 0);



C'est possible de résoudre un système de 0 équations à 0 inconnues?
Que fait l'API dans ce cas (ca fait un sacré programme linéaire
dégénéré ce truc)

sam (ancien utilisateur Cplex, Xpress, etc)
Avatar
Olve
Le 05/06/2012 07:55, Samuel DEVULDER a écrit :
Le 04/06/2012 23:14, Olve a écrit :

LpSolve mylp = LpSolve.makeLp(0, 0);



C'est possible de résoudre un système de 0 équations à 0 inconnues?
Que fait l'API dans ce cas (ca fait un sacré programme linéaire
dégénéré ce truc)



Oui :)
C'est la première instruction : on crée le programme linéaire.
L'interface ne fait rien que créer la structure (un LpSolve, c'est
une collection de champs. Ceux des équations sont juste null)
Mais je peux mettre LpSolve.makeLp(0, 4); cela ne change rien.

A.O.