In my new and continuing series on hair-pulling, teeth-gnashing Java error messages, I am proud to present:
java.lang.UnsatisfiedLinkError: no j3dcore-ogl in java.library.path
Just for fun, I’ve been working through Pro Java 6 3D Game Development: Java 3D, JOGL, JInput and JOAL APIs
. I have been trying to rework the example code and make it my own as I go through the chapters.
Anyway, I built a small “Hello 3d” app but when I attempted to run it I get the above UnsatisfiedLinkError. What was odd was that the sample code from the book ran without any problems, but I was getting this error.
For some Java libraries, there are native code (C++ extensions, basically) that Java needs to work with that particular feature. Java3d is a prime example. You need to put the j3dcode.jar, j3dutils.jar, and vecmath.jar files on your CLASSPATH. Additionally, you need to put the native code, j3dcore-ogl.dll (j3dcore-ogl.so on Linux) onto the PATH. This can be in the JRE/bin folder, but the Java3d isntall file says to avoid sticking it in there, as it can cause problems. I choose to keep all my Java files in my D:\java\lib folder. — in this case the java3d-ogl.dll is in D:\java\lib\j3d\bin. And since I am using Eclipse, I configure Eclipse with a user library like this:

Eclipse dialog for User Libraries in the Java Build Path
I focused on the “java.library.path” part of the error message. I configured Eclipse correctly above, and had my app spit out the System.getProperty (”java.library.path”) to the Console. It was correct.
But it didn’t work! At. All. Mysteriously, the sample code–which was configured to use that same Eclipse User Library, worked just fine.
After a lot of Googling and talking to myself (grr, I’ll show you unsatisfied…). I noted in my TaskBar that the icons for the sample Application (Life3d) and my little app where different. And a lightbulb went on. Sample code was running Java 1.6, and mine was running under Java 1.5. (I had chosen JDK 5 because I was thinking about redistribution to some non-geek friends, and figured more people would have Java 1.5 than 1.6.)
Now–in theory, there should be no difference. Not sure if this is a feature or a bug–the Eclipse stack is sometimes too big to tell. But my Eclipse is running on Java 1.6 (Vista x64), and perhaps the way it is creating the class loader for the 1.5 JVM it is not picking up that .dll, even though the .dll was on my PATH (or in my Eclipse native library location).
My fix: Inside Eclipse 3.4, swapping my project to use Java 1.6 as my JVM fixed the problem. Hurray! I have yet to test building a JAR and trying it outside of Eclipse… I’m just trying to get through a few more chapters so I can get to the fun stuff.
Hope this helps someone.
After several months of using mostly Visual Studio, I have some time now to shift gears back into Java. The timing is good–the annual release of Eclipse and all its subprojects happened while I was out of town on vacation last month.
I’m working on a new computer, running Vista 64bit. I reaped the rewards of Moore’s Law by obtaining a custom build box with a Quad processor and 4 gigs of ram and a fancy graphics card for about 130,000 JPY. Oh yeah, a terabyte of storage. Anyway, the Core 2 Quad CPU was so reasonable I couldn’t not get it.
I’ve been using Vista for about 8 months and am still getting used to it. I am far from a Windows expert. And the ins-and-outs of 64bit versions of software I am still getting used to.
I discovered I had 5 version of Java installed on Vista: 1.5 and 1.6 in 32 bit versions, a 64bit 1.5 JRE (installed by Web Start?), and the 64bit 1.5 and 1.6 SDKs. I figured I would clean out the 32 bit versions. In fact, I wound up uninstalling every single version of Java and re-installing just the latest 1.5 and 1.6 SDKs, as there were updates that I didn’t yet.
Then I started up Eclipse and I got this really annoying error:
JVM Terminated. Exit Code=-1.
My environment: 64bit Vista Ultimate, Java 1.6 x86_64, Eclipse Gandymede (JEE zip download).
Google returned a lot of problems around Exit codes but nothing that specifically addressed this issue. Turns out the exit code just means “you’re out of luck!” I tried to find a list of all exit codes but had no luck. A lot of the advice about the exit code problem seems specific to Eclipse 3.3 and messing with the eclipse.ini settings (I recall vaguely having to do this about 7 months ago). That didn’t work.
After banging my head against the wall (needlessly), I realized that the Eclipse Gandymede default download is a 32bit download. I had to find the Eclipse 3.4 64bit Windows download (which is a little tricky, because they do a good job of steering you to the Gandymede stuff–what you want is the Eclipse Platform download link), and then use the Gandymede update site to get all the subprojects downloaded correctly. Hurray for fiber to the home—it was not too painful to download all of it.
Eventually, I wound up reinstalling a 32bit version of Java. Turns out, that is the Java used by Firefox and IE. Need that for viewing applets.
You’re not really blogging unless you’re involved in some random chain-letter variant. This one seems to be not too lame.
Achoo!
Edit - wow, I need some QA. Copy/pasting the code into the WP’s Visual Editor *so* did not work. Fixed.
Spent more time than I care to admit today stuck on something soooo simple. Was trying to build a maven project at home, and kept getting this error: “method does not override a method from its superclass”.
What is happening? Well, there is a @Override annotation on one of the methods, but it doesn’t have a superclass–it is annotating a method that is being implemented (from an interface), not a method that is inherited (from a superclass).
The @Override annotation is a Java 1.5 feature, and the error message I was getting was coming (correctly) from a 1.5 compiler. However in Java 1.6 the @Override annotation can also be applied to methods that are implemented from an interface.
Someone started using Java 6 and Java 6 features in the project, without updating the pom.xml file to fix this. Grrr.
The fix was to update the configuration of the maven-compiler-plugin to use 1.6 as both the source and the target, rather than 1.5. set my JAVA_HOME to point to Java 1.6 and that was that. I wound up putting the config for maven-compiler-plugin back to 1.5. Which doesnt seem quite right, either, but fixes the UTF-8 error I am getting. Ugh!
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.51.61.5</source>
<target>1.51.61.5</target>
<encoding>UTF8</encoding>
<optimize>true</optimize>
</configuration>
</plugin>
I’ve been looking for a decent virtual desktop solution for Vista. There’s a couple open source products that have lots of links, but I tried one, Vista Virtual Desktop Manager, and found it a little slow. It uses the new Vista screen thumbnails API and I just found it… unusable.
My favorite multi desktop solution on XP was multidesk, which was in beta forever and never updated and only available via download.com; I was delighted to find that there is a new version, Multidesk Expert, that works on XP. Shareware, I’m definitely going to send this guy some money.
Multidesk is fast, easy to use, and stays out of the way. No fancy animations, just lots of room to work…
UPDATE
Completely changed my mind. After about a week, I started getting weird crashes in Multidesk Expert. And by that time, a new version of Vista Virtual Desktop Manager came out that had quicker animations and was more stable. So hurrah for Vista Virtual, and so long, Multidesk.
When I started doing web development, Javascript was a curiousity, a tacked-on bit of functionality in the browser. It existed out there to do form validation and open new windows, other than that, was a victim of the browser wars and incompatibilities.
I wound up focusing more on content management, integration of design and the backend, and left Javascript to those with the patience to do extensive cross-browser testing and willing to live with the limitations of doing everything on the client side.
I got my first look at what Javascript could really do in 2000 or so (fuzzy on the exact dates) when I came across a service called HalfBrain that had a great Excel-like spreadsheet running in the browser. The only catch was: it only ran in IE5, on Windows.
Now, I could be making this all up–but I’m pretty sure that company closed down, but the developers resurfaced at oddpost, who did a great web-based email client, but, again: IE/Win only. (oddpost is, of course, now Yahoo Mail’s interface.)
But the Javascript folks have kept at it–and now that we have Firefox (and I need to write some time about how great Mozilla is)– and other stable, standards-compliant browsers — it’s enabled the current wave of Javascript development.
Well, I’m a late to the party. (That’s okay, before the party there was a lot of pain. I’d rather be a little late than early.) But it’s a great party, and there’s certainly a lot of enthusiasm and momentum in this space.
Enthusiasm was particularly apparent a six weeks ago when I attended the “Future of Javascript” session sponsored by Mozilla Japan and the Shibuya.js Javascript user’s group. The talk given by John Resig was especially interesting, and made me determined to look closer at JQuery as well.

At any rate–I’ve done work with scriptaculous and prototype in the past year, and am just starting with JQuery. As a technologist, you have to pick and choose what you are going to learn. There’s just too much out there to learn everything.
Well, I’m going to work on learning JQuery.
John’s presentation was not just about JQuery–he laid out the roadmap and opportunities for Javascript the language. Ten years ago, I would have groaned about working with Javascript. But this time, I’m cautiously excited.
$ whois filsa.net
Domain Name: FILSA.NET
Created on: 06-Dec-97
I registered the filsa.net domain exactly ten years ago today.
I chose filsa.net because it was short, and when people say my first and last name aloud, they tend to run it together into one word.
This domain has not been especially active over the years–there was certainly more activity in the first 3 years then there has been in the last seven.
Still, filsa.net is more of a symbol of all the work I’ve done since I started doing web work professionally. A milestone, of sorts.
So, ten years. I’ll toast myself, and wish for ten years more. Banzai!
there’s something soothing about writing html on a rainy weekend.
yes, i spent most of saturday afternoon, listening to the rain fall outside while i ground away at a new site design for filsa.net. it’s pretty satisfying to have a mental image of what you want the site to be, and be able to express that design in a few lines of html and a few more lines of css code.
also, you have to love the no-compile instant development cycle for html. edit, save, reload the browser. wha-la! (flourish).
i managed to pick out some great non-commercial for-attribution Creative Common licensed photos on flickr for my banner images. i need to recut the images because i did them as pngs for some reason. but they are great images and add a lot of punch to the design.
but a design is not enough. i got pretty far with a design, but there’s so much more i want to do:
- i want to add interactive elements.
- i want a randomly rotating banner image.
- i want the banner area to be shrinkable.
- i want the home page to have content that toggles on and off.
- and so on.
and then i take a wander through some of my friend’s websites. it’s a truism that you maintain your website more when you are looking for work, or when you think people will come to look at your site. so my friend’s websites are in various stages of development:
brandon has always had the best, richest, deepest personal website of anyone i know. it’s impressive technically, has great content, and has a consistent design and user experience. it’s humbling, how well he knows how to put a site together.
florian has both a great eye for design and an ear for honest conversation. he puts both to good use on fangohr.com.
other friend’s sites are stagnant because they’ve been busy with work or other website projects.
i notice that one of my friends has taken down his personal site. he got a full time gig a few months back, so there’s no need to hang out the shingle, as it were. all his site says now is:
you have been cursed by gypsies!
looking at brandon’s site, i think i might need a heavy duty backend system to help me manage my content. i don’t mind coding a couple pages by hand, but more than 5 or 6, it’s time to use tools to help me out. so i’m evaluating a little content management system called mephisto. i’m pretty sure that it’ll frustrate me in some way–all the cm systems i’ve ever used have had limitations of one sort or another.
it feels good to be developing a website again.
well, look at this. a blog.
it’s certainly overdue. not that i haven’t been blogging elsewhere, but i’ve always been super reluctant to put myself online and into the conversation. partly because of personality–i’m more interested in listening than telling. partly because of image–there’s the image of the blowhard self-promoting blogger, who feels obligated to bless the world with his opinions.
i’ve been around blogging since, well, for as long as it has been around. (more on that later). i’ve even written some blogging software.
so why start blogging now?
well, i want to be a better writer. apparently doing something consistently, day in and day out, is the only way to improve.
additionally, i want to keep track of my ideas and development. there’s definitely been an evolution in my attitudes towards technology—what it can do, what it can’t do. let’s just say the endless optimism of the early to mid 90’s has worn just a little bit, and an appreciation that technology for it’s own sake isn’t all that interesting.
it will be value to have a written record to point to, both when i’m right and when i’m wrong. and i want that record to be public. turns out, it’s no fun to be right if no one knows it. no fun to be wrong–if there isn’t someone to correct you.
i think i can learn, about myself, and the world i work in, by blogging. being accountable for what i write will force me to be a better researcher, deeper thinker, and clearer communicator.
finally, i want to tell my story. i want to clear the air, set the record straight, explain the world.
you know. as i see it.