In case it is useful to someone:
I've found an issue using jde-usages with the latest jdee (trunk).
Basically I wasn't able to display a inheritance tree (subtypes or
supertypes) for a given class.
Log shown in the messages buffer:
---------------------------------------------
error : (void-variable java\.io\.printstr...@7a3570b0) [2 times]
error : (void-variable //) [3 times]
Beanshell expression evaluation error.
Expression: {
boolean _prevShowValue = this.interpreter.getShowResults();
Object _retVal = null;
this.interpreter.setShowResults(false);
_jdeCustEvalFn() { jde.util.Usages.getAllClasses (out); };
try { _retVal = eval("_jdeCustEvalFn();"); }
finally {
this.interpreter.setShowResults(_prevShowValue);
}
if (_retVal != null) print(_retVal);
}
Error: // Error: // Uncaught Exception: Method Invocation
this.interpreter.eval : at Line: 73 : in file: /bsh/commands/eval.bsh :
this .interpreter .eval ( expression , this .caller .namespace )
Called from method: eval : at Line: 29 : in file: <unknown file> : eval
( "_jdeCustEvalFn();" )
Target exception: Sourced file: inline evaluation of:
``_jdeCustEvalFn();'' : Undefined argument: out : at Line: 28 : in
file: <unknown file> : ( out )
Called from method: _jdeCustEvalFn : at Line: 1 : in file: inline
evaluation of: ``_jdeCustEvalFn();'' : _jdeCustEvalFn ( )
[2 times]
---------------------------------------------
So, basically the error is caused by the undefined argument 'out'.
The error can be fixed by replacing the following 3 lines in the
jde-usages-class-completion.el (line 46):
(jde-jeval (concat "out = new java.io.PrintStream (new
java.io.BufferedOutputStream (new java.io.FileOutputStream (new
java.io.File (\"" classes-file "\"))));"))
(jde-jeval "jde.util.Usages.getAllClasses (out);")
(jde-jeval "out.close();")
By:
(jde-jeval (concat "out = new java.io.PrintStream (new
java.io.BufferedOutputStream (new java.io.FileOutputStream (new
java.io.File (\"" classes-file "\")))); jde.util.Usages.getAllClasses
(out); out.close();"))
Basically, every 'jde-eval' invocation is scoped (between '{...}').
That's why the 'out' variable is not known in the second 'jde-eval'
invocation.
Replacing the 3 tree evaluations by just one fixes the problem.
------------------------------------------------------------------------------
_______________________________________________
jdee-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jdee-users