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.