<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mokka mit Schlag &#187; Java</title>
	<atom:link href="http://www.elharo.com/blog/category/software-development/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.elharo.com/blog</link>
	<description>Ranting and Raving</description>
	<lastBuildDate>Wed, 01 Feb 2012 13:01:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>How to Tell Where Eclipse Finds a Class?</title>
		<link>http://www.elharo.com/blog/software-development/java/2009/01/03/how-to-tell-where-eclipse-finds-a-class/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2009/01/03/how-to-tell-where-eclipse-finds-a-class/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 02:36:47 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/?p=1001934</guid>
		<description><![CDATA[I&#8217;m debugging a weird class loading issue in XOM. Some of my unit tests can find the Crimson parser. Some can&#8217;t. I don&#8217;t know why. In Eclipse, I can press F3 and it locates both the class and corresponding source for this jar. But where did it find it? is there any way to see [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m debugging a weird class loading issue in XOM. Some of my unit tests can find the Crimson parser. Some can&#8217;t. I don&#8217;t know why. In Eclipse, I can press F3 and it locates both the class and corresponding source for this jar. But where did it find it? is there any way to see where (i.e. path in the file system) that class came from? </p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2009/01/03/how-to-tell-where-eclipse-finds-a-class/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Error occurred during initialization of VM java/lang/ClassNotFoundException: error in opening JAR file /usr/local/java/jre/lib/rt.jar</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/11/17/error-occurred-during-initialization-of-vm-javalangclassnotfoundexception-error-in-opening-jar-file-usrlocaljavajrelibrtjar/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/11/17/error-occurred-during-initialization-of-vm-javalangclassnotfoundexception-error-in-opening-jar-file-usrlocaljavajrelibrtjar/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 17:33:18 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/linux/2007/11/17/error-occurred-during-initialization-of-vm-javalangclassnotfoundexception-error-in-opening-jar-file-usrlocaljavajrelibrtjar/</guid>
		<description><![CDATA[Just a little Google fodder. Should you encounter this uncommon error message when trying to compile or run a Java program: $ javac -version Error occurred during initialization of VM java/lang/ClassNotFoundException: error in opening JAR file /usr/local/java/jre/lib/rt.jar it means that your installation of the JDK, and likely your original download is corrupt. Delete it, download [...]]]></description>
			<content:encoded><![CDATA[<p>Just a little Google fodder. Should you encounter this uncommon error message when trying to compile or run a  Java program:</p>
<pre><samp>$ javac -version
Error occurred during initialization of VM
java/lang/ClassNotFoundException: error in opening JAR file /usr/local/java/jre/lib/rt.jar</samp></pre>
<p>it means that your installation of the JDK, and likely your original download is corrupt. Delete it, download again, and reinstall. This can occur with essentially any Java program: the interpreter, the compiler, jar, or a program merely written in Java such as LimeWire.</p>
<p>For reasons that aren&#8217;t especially clear, this bug seems to occur most frequently on Ubuntu Linux 7.10 Gutsy Gibbon when running in a virtualized environment such as VMWare. At least those seem to be the common factors for everyone else I found with this problem when googling it myself. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/11/17/error-occurred-during-initialization-of-vm-javalangclassnotfoundexception-error-in-opening-jar-file-usrlocaljavajrelibrtjar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQLAlchemy for Java</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/06/28/sqlalchemy-for-java/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/06/28/sqlalchemy-for-java/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 10:06:54 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/2007/06/28/sqlalchemy-for-java/</guid>
		<description><![CDATA[Anyone know of an equivalent of the SQLAlchemy Python data binding library for Java? SQLAlchemy maps Python classes to the records in a table. What distinguishes it from Java-based ORM tools that I&#8217;ve seen such as Hibernate is that in SQLAlchemy you can map any table, not just ones that actually exists in the database. [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone know of an equivalent of the <a href="http://www.sqlalchemy.org/">SQLAlchemy</a> Python data binding library for Java? SQLAlchemy maps Python classes to the records in a table. What distinguishes it from Java-based ORM tools that I&#8217;ve seen such as Hibernate is that in SQLAlchemy you can map any table, not just ones that actually exists in the database. </p>
<blockquote><p>SQLAlchemy doesn&#8217;t view databases as just collections of tables; it sees them as relational algebra engines. Its object relational mapper enables classes to be mapped against the database in more than one way. SQL constructs don&#8217;t just select from just tables—you can also select from joins, subqueries, and unions. Thus database relationships and domain object models can be cleanly decoupled from the beginning, allowing both sides to develop to their full potential.</p></blockquote>
<p><span id="more-1000707"></span></p>
<p>In other words, with SQLAlchemy you  can make statements like <code>SELECT Student.Name, Exam.Grade FROM Students, Exams WHERE Students.ID=Exams.Student_ID</code> and  map classes to the table this statement returns. Hibernate, by contrast, really, really believe in the concept of at least one-class per table. A single class that crosses multiple tables is beyond it. In Hibernate you have to map classes to the physical database tables (or perhaps views, not sure about that) and then do your queries against the objects in HQL instead of against the tables in SQL. The you spend a ridiculous amount of time logging the SQL statements it actually generates and trying to figure out how to optimize them. By contrast, since SQLAlchemy&#8217;s query language is SQL, it&#8217;s much easier to let the database do the heavy lifting.</p>
<p>The downside of SQLAlchemy is that it&#8217;s very easy to put yourself in a situation where updates just aren&#8217;t possible. However, for many applications read-only access is what you need anyway. </p>
<p>Maybe iBatis?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/06/28/sqlalchemy-for-java/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Choosing a Continuous Integration Server</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/06/02/choosing-a-continuous-integration-server/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/06/02/choosing-a-continuous-integration-server/#comments</comments>
		<pubDate>Sat, 02 Jun 2007 11:09:15 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/2007/06/02/choosing-a-continuous-integration-server/</guid>
		<description><![CDATA[I&#8217;ve been tasked with setting up a continuous integration server for a team Java project. Options are: Anthill Continuum Cruise Control Something else? We don&#8217;t have a strong opinion about any of these. Anyone care to comment on which one we should use and why?]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been tasked with setting up a continuous integration server for a team Java project. Options are:</p>
<ul>
<li><a href="http://www.anthillpro.com/html/products/anthillos/default.html">Anthill</a></li>
<li><a href="http://maven.apache.org/continuum/">Continuum</a></li>
<li><a href="http://cruisecontrol.sourceforge.net/">Cruise Control</a></li>
<li>Something else?</li>
</ul>
<p>We don&#8217;t have a strong opinion about any of these. Anyone care to comment on which one we should use and why?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/06/02/choosing-a-continuous-integration-server/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>NetBeans 6.0 M9 and JavaFX Script</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/05/22/netbeans-60-m9-and-javafx-script/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/05/22/netbeans-60-m9-and-javafx-script/#comments</comments>
		<pubDate>Tue, 22 May 2007 17:07:35 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/java/2007/05/22/netbeans-60-m9-and-javafx-script/</guid>
		<description><![CDATA[Quick tip: if you&#8217;re playing with JavaFX Script, stick to NetBeans 5.5. The JFX plugin is pretty throughly broken in 6.0, as are several other unrelated features. 6.0 M9 is way too buggy to be used in production just yet.]]></description>
			<content:encoded><![CDATA[<p>Quick tip: if you&#8217;re playing with JavaFX Script, stick to NetBeans 5.5. The JFX plugin is pretty throughly broken in 6.0, as are several other unrelated features. 6.0 M9 is way too buggy to be used in production just yet. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/05/22/netbeans-60-m9-and-javafx-script/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Another Reason Java is Faster than C (maybe)</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/03/12/another-reason-java-is-faster-than-c-maybe/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/03/12/another-reason-java-is-faster-than-c-maybe/#comments</comments>
		<pubDate>Mon, 12 Mar 2007 23:04:23 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/2007/03/12/another-reason-java-is-faster-than-c-maybe/</guid>
		<description><![CDATA[Paul S. R. Chisholm points out a new reason virtual machine based languages such as Java may sometimes outperform statically optimized languages such as C: Portability depends on architecture (for example, x86 vs. PowerPC), but high performance depends on microarchitecture (for example, Pentium M vs. Athlon 64 X2). Today&#8217;s Core 2 chips have many high [...]]]></description>
			<content:encoded><![CDATA[<p>Paul S. R. Chisholm <a href="http://books.slashdot.org/books/07/03/12/1623226.shtml">points out</a> a new reason virtual machine based languages such as Java may sometimes outperform statically optimized languages such as C:</p>
<blockquote cite="http://books.slashdot.org/books/07/03/12/1623226.shtml"><p>Portability depends on architecture (for example, x86 vs. PowerPC), but high performance depends on microarchitecture (for example, Pentium M vs. Athlon 64 X2). Today&#8217;s Core 2 chips have many high performance features missing from the 1993 original Pentiums. A good compiler like gcc can take advantage of those additional features. This is bad news if you&#8217;re using a binary Linux distribution, compiled to a lowest common denominator. It&#8217;s good news if you&#8217;re building and installing Linux from source, with something like Linux From Scratch or Gentoo/Portage. It&#8217;s also good news for just-in-time compilers (think Java, .NET, and Mono); they&#8217;re compiling on the &#8220;target&#8221; machine, so they can generate code tailored for the machine&#8217;s exact microarchitecture. </p></blockquote>
<p>This sounds plausible in theory. What I don&#8217;t know is whether Java takes advantage of this in practice. Has anyone looked at the JIT source code lately? Can anyone say whether it makes any microarchitecture-specific optimizations?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/03/12/another-reason-java-is-faster-than-c-maybe/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>PDF Killed the Programming Language</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/02/25/pdf-killed-the-programing-language/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/02/25/pdf-killed-the-programing-language/#comments</comments>
		<pubDate>Sun, 25 Feb 2007 13:35:52 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/2007/02/25/pdf-killed-the-programing-language/</guid>
		<description><![CDATA[It&#8217;s a slow Sunday morning so I was going to browse around a new language I&#8217;d been hearing rumors of, and maybe send them a little link love if I liked what I saw. However it seems all their tutorials, manuals, white papers, and almost everything else are in PDF. Yuck. Not worth my time. [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a slow Sunday morning so I was going to browse around a new language I&#8217;d been hearing rumors of, and maybe send them a little link love if I liked what I saw. However it seems all their tutorials, manuals, white papers, and almost everything else are in PDF. <em>Yuck</em>. Not worth my time. </p>
<p>They&#8217;re complaining that they can&#8217;t get any thought leaders to pay attention to them. If they insist on publishing on the Web in a format designed for paper books, it&#8217;s no wonder no one has noticed them. Write back when you start noticing this little thing called HTML, guys. I&#8217;ve got a feeling it&#8217;s going to be big one of these days.<br />
<span id="more-1000428"></span></p>
<p>Seriously folks, PDF is wrong for the Web and always has been. Unless you&#8217;re distributing fliers to your salespeople that they&#8217;re going to take to a print shop and have printed up for their next meeting, there&#8217;s really no reason to publish PDF on the Web. Whenever I see a link to a PDF, I know that the <em>author</em> was so enamored of their tool that they didn&#8217;t stop to consider the desires or convenience of the <em>reader</em>. They put their needs ahead of their readers. </p>
<p>HTML has been around for almost 20 years now. The time has long since past for using HTML incapable tools that can only print to PDF. If you&#8217;re going to publish on the Web, then you need to publish in HTML, and that means you need to author in HTML or a format that can be easily converted to HTML. PDF is just a sure sign that a site is being put up for the ego-gratification of its authors, and has little interest in communicating with anyone else.</p>
<p>For most documents today, the Web is the <strong>most important</strong> medium. It is more important to have a good web site that people can read than it is to have attractive dead trees. If a publisher/author does not have the time or budget to manually convert printed formats into HTML for the Web, then they should author in HTML first, and print that, rather than authoring in Word and posting it as PDF on the Web. HTML is a much better paper format than PDF is a web format. With a little CSS or XSLT trickery, an HTML authored book is indistinguishable from one written in Word.</p>
<p>PDF is nothing more than a prepress format in the same family as raw PostScript, dvi files, XSL-FO, and a dozen other technologies designed for 1980s-era Linotypes. It has a niche, but that niche is not the Web. If you want people to read what you write, then publish in HTML, never PDF.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/02/25/pdf-killed-the-programing-language/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Answering Sleepycat</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/02/18/answering-sleepycat/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/02/18/answering-sleepycat/#comments</comments>
		<pubDate>Sun, 18 Feb 2007 14:24:20 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/2007/02/18/answering-sleepycat/</guid>
		<description><![CDATA[Sleepycat asks some interesting questions about a non-standard persistence API they are developing. By the way, non-standard is good. Ideas like this should be tried out in open source products first before baking them into standards. I applaud Sleepycat for taking this route instead of rushing into the JCP. Indeed standardizing in advance of implementation [...]]]></description>
			<content:encoded><![CDATA[<p>Sleepycat <a href="http://www.theserverside.com/news/thread.tss?thread_id=38916">asks</a> some interesting questions about a <em>non-standard</em> persistence API they are developing. By the way, non-standard is <em>good</em>. Ideas like this should be tried out in open source products first before baking them into standards. I applaud Sleepycat for taking this route instead of rushing into the <abbr>JCP</abbr>. Indeed standardizing in advance of implementation experience explains a lot of the problems in <abbr>JEE</abbr> that APIs like this one are designed to replace. Anyway, on to the questions:<br />
<span id="more-1000418"></span></p>
<blockquote><p> 1. If you have one, what is your favorite persistence approach for Java and how would you rate its usability compared to the usability of the Persistence API? What aspects of the Persistence API are more or less usable?
</p></blockquote>
<p>I tend to look at very low-level solutions for persistence: JDBC or XML files. I am extremely suspicious of any effort to serialize objects, especially across application boundaries. I prefer to roll my own serialization code. This also has the advantage of being extremely usable.</p>
<p>Other than that I can&#8217;t say anything because your <a href="http://dev.sleepycat.com/je-persist-review/java/com/sleepycat/persist/package-summary.html">link to the API</a> keeps redirecting me to the main home page.</p>
<blockquote><p>   2. The Persistence API makes heavy use of Java 1.5 generics and annotations. Without using these new language features, we believe that usability would be lessened. Do you consider the use of these language features positive or negative, and why?</p></blockquote>
<p>It&#8217;s a negative. I still use Java 1.4 for a lot of work, plus generics don&#8217;t actually work. The simplest forms are convenient for documentation purposes. However, you can&#8217;t rely on them at runtime.</p>
<blockquote><p>   3. The Persistence API, while it increases usability, does not add a high level query facility. Do you consider a high level query facility to be a requirement for a Java persistence solution?</p></blockquote>
<p>Yes. It&#8217;s fairly important.</p>
<blockquote><p>   4. The Persistence API does not conform to an existing standard such as JDO. To do so, we believe that both usability and performance would be compromised. Do you consider conformance to a standard to be more important than such compromises?</p></blockquote>
<p>No, it is not. Anyone who wants to use <abbr>JDO</abbr> can. This API is only for people who&#8217;ve rejected JDO. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/02/18/answering-sleepycat/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Homework</title>
		<link>http://www.elharo.com/blog/software-development/java/2007/02/05/homework/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2007/02/05/homework/#comments</comments>
		<pubDate>Mon, 05 Feb 2007 15:38:12 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/java/2007/02/05/homework/</guid>
		<description><![CDATA[Don&#8217;t you just love students who send you their homework problems in the hopes that you&#8217;ll do it for them? Here&#8217;s the latest example I&#8217;ve gotten: Often in reading an article, a book or a document one comes across a word whose meaning is not known to the reader. This problem can be overcome by [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t you just love students who send you their homework problems in the hopes that you&#8217;ll do it for them? Here&#8217;s the latest example I&#8217;ve gotten:</p>
<blockquote><p>Often in reading an article, a book or a document one comes across a word whose meaning is not known to the reader. This problem can be overcome by providing an on-line dictionary so that a reader could look up the meaning of a word. In order to provide help with reading, you are asked to develop a Java Applet with the following GUI interface: </p>
<p>Labels Text Boxes<br />
Word typed Text box A<br />
Word meaning Text box B </p>
<p>Once a user types a word in text box A and presses return, the meaning of the word is displayed in text box B (provided that word exists in the dictionary), otherwise, the message &#8220;word not known&#8221; appears in Text Box B. Notice that both text boxes are preceded by a label. For the purpose of testing, it is expected that the developed Applet is able to cope with 100 or more English words</p></blockquote>
<p>That&#8217;s actually not a bad problem: takes in applets, GUI widgets, event handlers, data structures, and possibly network communication (if the dictionary is stored remotely).  However it&#8217;s not too complex to implement in a week. I&#8217;ll have to remember it for my own classes.</p>
<p>In the meantime, if any teacher recognizes this as their own assignment and wants to know where I got it, drop me a line. :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2007/02/05/homework/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Compiling Javac</title>
		<link>http://www.elharo.com/blog/software-development/java/2006/11/16/compiling-javac/</link>
		<comments>http://www.elharo.com/blog/software-development/java/2006/11/16/compiling-javac/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 21:33:44 +0000</pubDate>
		<dc:creator>Elliotte Rusty Harold</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.elharo.com/blog/software-development/java/2006/11/16/compiling-javac/</guid>
		<description><![CDATA[I downloaded the javac sources and gave them a whirl with ant on my PowerBook. No success. They wouldn&#8217;t compile. I&#8217;m not sure whether this is because I&#8217;m using a Mac or because I&#8217;m using Java 5, and they want Java 6. There seem to be several missing or incompatible classes. ~/projects/compiler$ ant Buildfile: build.xml [...]]]></description>
			<content:encoded><![CDATA[<p>I downloaded the javac sources and gave them a whirl with ant on my PowerBook. No success. They wouldn&#8217;t compile. I&#8217;m not sure whether this is because I&#8217;m using a Mac or because I&#8217;m using Java 5, and they want Java 6. There seem to be several missing or incompatible classes.<br />
<span id="more-1000277"></span></p>
<pre>~/projects/compiler$ ant
Buildfile: build.xml

prep:
    [mkdir] Created dir: /Users/elharo/Projects/compiler/build/bootclasses
    [mkdir] Created dir: /Users/elharo/Projects/compiler/build/classes
    [mkdir] Created dir: /Users/elharo/Projects/compiler/dist/bin
    [mkdir] Created dir: /Users/elharo/Projects/compiler/dist/lib

check-javac.isuptodate:

build-lib.javac.jar:
    [mkdir] Created dir: /Users/elharo/Projects/compiler/build/gensrc/com/sun/tools/javac
     [copy] Copying 1 file to /Users/elharo/Projects/compiler/build/gensrc/com/sun/tools/javac/resources
    [javac] Compiling 250 source files to /Users/elharo/Projects/compiler/build/bootclasses
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:84: interface expected here
    [javac] public abstract class JCTree implements Tree, Cloneable, DiagnosticPosition {
    [javac]                                         ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1793: cannot find symbol
    [javac] symbol  : class Kind
    [javac] location: class com.sun.tools.javac.tree.JCTree.TypeBoundKind
    [javac]         public Kind getKind() {
    [javac]                ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java:449: reference to Tree is ambiguous, both class com.sun.tools.javac.tree.Tree in com.sun.tools.javac.tree and class com.sun.source.tree.Tree in com.sun.source.tree match
    [javac]     public TypeMirror getTypeMirror(Iterable&lt; ? extends Tree> path) {
    [javac]                                                        ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java:469: reference to Tree is ambiguous, both class com.sun.tools.javac.tree.Tree in com.sun.tools.javac.tree and class com.sun.source.tree.Tree in com.sun.source.tree match
    [javac]     public Iterable&lt; ? extends Tree> pathFor(CompilationUnitTree unit, Tree node) {
    [javac]                                                                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java:469: reference to Tree is ambiguous, both class com.sun.tools.javac.tree.Tree in com.sun.tools.javac.tree and class com.sun.source.tree.Tree in com.sun.source.tree match
    [javac]     public Iterable&lt; ? extends Tree> pathFor(CompilationUnitTree unit, Tree node) {
    [javac]                               ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:434: com.sun.tools.javac.tree.JCTree.JCCompilationUnit is not abstract and does not override abstract method getTypeDecls() in com.sun.source.tree.CompilationUnitTree
    [javac]     public static class JCCompilationUnit extends JCTree implements CompilationUnitTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:486: getTypeDecls() in com.sun.tools.javac.tree.JCTree.JCCompilationUnit cannot implement getTypeDecls() in com.sun.source.tree.CompilationUnitTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.util.List&lt;com .sun.tools.javac.tree.JCTree>
    [javac] required: java.util.List&lt; ? extends com.sun.source.tree.Tree>
    [javac]         public List&lt;jctree> getTypeDecls() {
    [javac]                             ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:503: com.sun.tools.javac.tree.JCTree.JCImport is not abstract and does not override abstract method getQualifiedIdentifier() in com.sun.source.tree.ImportTree
    [javac]     public static class JCImport extends JCTree implements ImportTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:515: getQualifiedIdentifier() in com.sun.tools.javac.tree.JCTree.JCImport cannot implement getQualifiedIdentifier() in com.sun.source.tree.ImportTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getQualifiedIdentifier() { return qualid; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:566: com.sun.tools.javac.tree.JCTree.JCClassDecl is not abstract and does not override abstract method getMembers() in com.sun.source.tree.ClassTree
    [javac]     public static class JCClassDecl extends JCStatement implements ClassTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:604: getMembers() in com.sun.tools.javac.tree.JCTree.JCClassDecl cannot implement getMembers() in com.sun.source.tree.ClassTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.util.List&lt;com .sun.tools.javac.tree.JCTree>
    [javac] required: java.util.List&lt; ? extends com.sun.source.tree.Tree>
    [javac]         public List&lt;jctree> getMembers() {
    [javac]                             ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:600: getExtendsClause() in com.sun.tools.javac.tree.JCTree.JCClassDecl cannot implement getExtendsClause() in com.sun.source.tree.ClassTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getExtendsClause() { return extending; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:624: com.sun.tools.javac.tree.JCTree.JCMethodDecl is not abstract and does not override abstract method getDefaultValue() in com.sun.source.tree.MethodTree
    [javac]     public static class JCMethodDecl extends JCTree implements MethodTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:672: getDefaultValue() in com.sun.tools.javac.tree.JCTree.JCMethodDecl cannot implement getDefaultValue() in com.sun.source.tree.MethodTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getDefaultValue() { // for annotation types
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:661: getReturnType() in com.sun.tools.javac.tree.JCTree.JCMethodDecl cannot implement getReturnType() in com.sun.source.tree.MethodTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getReturnType() { return restype; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:689: com.sun.tools.javac.tree.JCTree.JCVariableDecl is not abstract and does not override abstract method getType() in com.sun.source.tree.VariableTree
    [javac]     public static class JCVariableDecl extends JCStatement implements VariableTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:713: getType() in com.sun.tools.javac.tree.JCTree.JCVariableDecl cannot implement getType() in com.sun.source.tree.VariableTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getType() { return vartype; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1456: com.sun.tools.javac.tree.JCTree.JCTypeCast is not abstract and does not override abstract method getType() in com.sun.source.tree.TypeCastTree
    [javac]     public static class JCTypeCast extends JCExpression implements TypeCastTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1468: getType() in com.sun.tools.javac.tree.JCTree.JCTypeCast cannot implement getType() in com.sun.source.tree.TypeCastTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getType() { return clazz; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1479: com.sun.tools.javac.tree.JCTree.JCInstanceOf is not abstract and does not override abstract method getType() in com.sun.source.tree.InstanceOfTree
    [javac]     public static class JCInstanceOf extends JCExpression implements InstanceOfTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1491: getType() in com.sun.tools.javac.tree.JCTree.JCInstanceOf cannot implement getType() in com.sun.source.tree.InstanceOfTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getType() { return clazz; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1685: com.sun.tools.javac.tree.JCTree.JCArrayTypeTree is not abstract and does not override abstract method getType() in com.sun.source.tree.ArrayTypeTree
    [javac]     public static class JCArrayTypeTree extends JCExpression implements ArrayTypeTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1695: getType() in com.sun.tools.javac.tree.JCTree.JCArrayTypeTree cannot implement getType() in com.sun.source.tree.ArrayTypeTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getType() { return elemtype; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1705: com.sun.tools.javac.tree.JCTree.JCTypeApply is not abstract and does not override abstract method getType() in com.sun.source.tree.ParameterizedTypeTree
    [javac]     public static class JCTypeApply extends JCExpression implements ParameterizedTypeTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1717: getType() in com.sun.tools.javac.tree.JCTree.JCTypeApply cannot implement getType() in com.sun.source.tree.ParameterizedTypeTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getType() { return clazz; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1754: com.sun.tools.javac.tree.JCTree.JCWildcard is not abstract and does not override abstract method getBound() in com.sun.source.tree.WildcardTree
    [javac]     public static class JCWildcard extends JCExpression implements WildcardTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1777: getBound() in com.sun.tools.javac.tree.JCTree.JCWildcard cannot implement getBound() in com.sun.source.tree.WildcardTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getBound() { return inner; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1802: com.sun.tools.javac.tree.JCTree.JCAnnotation is not abstract and does not override abstract method getAnnotationType() in com.sun.source.tree.AnnotationTree
    [javac]     public static class JCAnnotation extends JCExpression implements AnnotationTree {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1814: getAnnotationType() in com.sun.tools.javac.tree.JCTree.JCAnnotation cannot implement getAnnotationType() in com.sun.source.tree.AnnotationTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]         public JCTree getAnnotationType() { return annotationType; }
    [javac]                       ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1848: com.sun.tools.javac.tree.JCTree.JCErroneous is not abstract and does not override abstract method getErrorTrees() in com.sun.source.tree.ErroneousTree
    [javac]     public static class JCErroneous extends JCExpression
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/JCTree.java:1860: getErrorTrees() in com.sun.tools.javac.tree.JCTree.JCErroneous cannot implement getErrorTrees() in com.sun.source.tree.ErroneousTree; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.util.List&lt;com .sun.tools.javac.tree.JCTree>
    [javac] required: java.util.List&lt; ? extends com.sun.source.tree.Tree>
    [javac]         public List&lt;jctree> getErrorTrees() {
    [javac]                             ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java:451: reference to Tree is ambiguous, both class com.sun.tools.javac.tree.Tree in com.sun.tools.javac.tree and class com.sun.source.tree.Tree in com.sun.source.tree match
    [javac]         Tree last = null;
    [javac]         ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTaskImpl.java:452: reference to Tree is ambiguous, both class com.sun.tools.javac.tree.Tree in com.sun.tools.javac.tree and class com.sun.source.tree.Tree in com.sun.source.tree match
    [javac]         for (Tree node : path)
    [javac]              ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTrees.java:80: com.sun.tools.javac.api.JavacTrees is not abstract and does not override abstract method getTree(javax.lang.model.element.Element,javax.lang.model.element.AnnotationMirror,javax.lang.model.element.AnnotationValue) in com.sun.source.util.Trees
    [javac] public class JavacTrees extends Trees {
    [javac]        ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTrees.java:164: getTree(javax.lang.model.element.Element,javax.lang.model.element.AnnotationMirror,javax.lang.model.element.AnnotationValue) in com.sun.tools.javac.api.JavacTrees cannot override getTree(javax.lang.model.element.Element,javax.lang.model.element.AnnotationMirror,javax.lang.model.element.AnnotationValue) in com.sun.source.util.Trees; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]     public JCTree getTree(Element e, AnnotationMirror a, AnnotationValue v) {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTrees.java:160: getTree(javax.lang.model.element.Element,javax.lang.model.element.AnnotationMirror) in com.sun.tools.javac.api.JavacTrees cannot override getTree(javax.lang.model.element.Element,javax.lang.model.element.AnnotationMirror) in com.sun.source.util.Trees; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]     public JCTree getTree(Element e, AnnotationMirror a) {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTrees.java:143: getTree(javax.lang.model.element.Element) in com.sun.tools.javac.api.JavacTrees cannot override getTree(javax.lang.model.element.Element) in com.sun.source.util.Trees; attempting to use incompatible return type
    [javac] found   : com.sun.tools.javac.tree.JCTree
    [javac] required: com.sun.source.tree.Tree
    [javac]     public JCTree getTree(Element element) {
    [javac]                   ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/api/JavacTrees.java:187: cannot find symbol
    [javac] symbol  : method getPath(com.sun.tools.javac.tree.JCTree.JCCompilationUnit,com.sun.tools.javac.tree.JCTree)
    [javac] location: class com.sun.source.util.TreePath
    [javac]         return TreePath.getPath(treeTopLevel.snd, treeTopLevel.fst);
    [javac]                        ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/TreeCopier.java:45: com.sun.tools.javac.tree.TreeCopier is not abstract and does not override abstract method visitOther(com.sun.source.tree.Tree,P) in com.sun.source.tree.TreeVisitor
    [javac] public class TreeCopier&lt;p> implements TreeVisitor&lt;jctree ,P> {
    [javac]        ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/TreeCopier.java:403: inconvertible types
    [javac] found   : com.sun.tools.javac.tree.Tree
    [javac] required: com.sun.tools.javac.tree.JCTree
    [javac]         JCTree tree = (JCTree) node;
    [javac]                                ^
    [javac] /Users/elharo/Projects/compiler/src/share/classes/com/sun/tools/javac/tree/TreeCopier.java:406: inconvertible types
    [javac] found   : com.sun.tools.javac.tree.Tree
    [javac] required: com.sun.tools.javac.tree.JCTree.LetExpr
    [javac]                 LetExpr t = (LetExpr) node;
    [javac]                                       ^
    [javac] 41 errors
&lt;/jctree>&lt;/p>&lt;/jctree>&lt;/com>&lt;/jctree>&lt;/com>&lt;/jctree>&lt;/com>&lt;</pre>
<p>I loaded the code into Eclipse, which also complains about some classes. One thing I noticed: they haven&#8217;t been using static code analyzers as much as I would. There are lots of unused imports here. Maybe NetBeans isn&#8217;t as aggressive as Eclipse about removing such detritus?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.elharo.com/blog/software-development/java/2006/11/16/compiling-javac/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

