• Welcome to OS2World OLD-STATIC-BACKUP Forum.
 

News:

This is an old OS2World backup forum for reference only. IT IS READ ONLY!!!

If you need help with OS/2 - eComStation visit http://www.os2world.com/forum

Main Menu

Arachnophilia version 5.5

Started by Pete, 2011.10.05, 00:30:54

Previous topic - Next topic

Pete

Hi All

Looks like the problem is in either java6 or odin as the error log generated shows:-

java.io.IOException: Could not get shell folder ID list


Regards

Pete

Joop

I have no problem with Arachnophilia v5.5. I could open a html file or a txt file. Didn't tried others, its almost an endless list to pick from. You need to clean the home directory with old files from previous installations if you had run it before. I run latest Java for eCS with not the latest of Odin, but a release prior the latest. If you run with latest Odin it might be a problem there.

Regards,
Joop

Pete

Hi Joop

Looks like the problem is within the recent odin builds then as both the current and the previous odin builds show the same problem.

If only we had a real "native" java ...

Regards

Pete





Joop

Quote from: Pete on 2011.10.06, 01:18:33
Hi Joop

Looks like the problem is within the recent odin builds then as both the current and the previous odin builds show the same problem.

If only we had a real "native" java ...

Regards

Pete
I run with Odin version 0.6.21668 (2011-07-10), I don't know what version your previous version might be. It is real native Java. This Java version is far better then anything we had between 1.1.8 and this version (1.60.).

Pete

Hi Joop,

No, java1.6 is not "native" as it works using the odin runtime and is therefore a win32 java not an os/2 java.

Yes, the previous build I refer to that does not work for Arachnophilia (and other apps) is odin32bin-20110710-release.wpi - which seems to be working for you.

That leaves me wondering why it is not working here...

Regards

Pete




Joop

Quote from: Pete on 2011.10.06, 03:13:32
Hi Joop,

No, java1.6 is not "native" as it works using the odin runtime and is therefore a win32 java not an os/2 java.

No, its native, Odin is only needed for wps. Its not a win32java, its not like java 1.42 or 1.5009 which are odin versions. From java 1.6 full source is available which is not the case with versions 1.42 and 1.5009.

Regards,
Joop

Joop

#7
Quote from: Pete on 2011.10.06, 03:13:32
Hi Joop,

That leaves me wondering why it is not working here...

Regards

Pete

Try this in a cmd file;

@echo off
set BEGINLIBPATH=[drive:]\JAVA\JAVA160\bin
set pad=%path%
set path=[drive:]\JAVA\JAVA160\bin;%pad%
[Arachnophilia drive:]
cd [Arachnophilia drive:]\DTP\Arachnophilia
java.exe -Duser.home=[Arachnophilia drive:]\DTP\Arachnophilia -jar Arachnophilia.jar
set path=%pad%

Of course you could skip the directory "DTP" or use something else.

I have only from ODIN this in config.sys [drive:]\ODIN\SYSTEM32 in "libpath" and in "set path". Odin is installed with WPI over and over.

Regards,
Joop

Pete

Hi Joop

Quote from: Joop on 2011.10.06, 04:38:48
Quote from: Pete on 2011.10.06, 03:13:32
Hi Joop,

No, java1.6 is not "native" as it works using the odin runtime and is therefore a win32 java not an os/2 java.

No, its native, Odin is only needed for wps. Its not a win32java, its not like java 1.42 or 1.5009 which are odin versions. From java 1.6 full source is available which is not the case with versions 1.42 and 1.5009.

Regards,
Joop



Yes, full source is available for openjava.

This is why it is a shame that the developers have opted for the win32 route.

Yes, you *DO* need Odin in order to run this java. Don't believe me? Either
1] read the java1.6 homepage http://svn.netlabs.org/java/ - look at the section Prerequisites. Do you see the requirement for Odin32 Library?
2] Or uninstall Odin and watch as your java apps do not run  :-)

Regards

Pete

Pete

Hi Joop

It should not be necessary to add this java to Path or Libpath as I am starting java apps using Drive:\PathToJava\java(w).exe. However, I could be wrong... I'll have to give it a try.

As my HOME directory exists and java apps can use it the -Duser.home= parameter is not required.

So, I end up with this as a cmd file:-

BEGINLIBPATH=J:\Java\openJDK6\bin
SET PATH=J:\Java\openJDK6\bin;%PATH%
javaw.exe -jar J:\Java\Arachnophilia\Arachnophilia.jar

Having started Arachnophilia using the above command file I try to use File, Open. The result:-

Error log for Arachnophilia 5.5 build 2619
Thu Oct 06 15:25:14 GMT 2011
Operating System: OS/2
Java Version: 1.6.0-ga
If you plan to submit a bug report, be sure to include the entire contents of this log.
If there are no messages below the dashed line, there were no errors
during the most recent Arachnophilia session.
If you see a message below about an error "in native code outside the VM",
or language like that, this means there was an error in your operating system,
not in Java or Arachnophilia.
------------------------------------------------------------
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.io.IOException: Could not get shell folder ID list
   at sun.awt.shell.Win32ShellFolder2$ComTask.execute(Win32ShellFolder2.java:1258)
   at sun.awt.shell.Win32ShellFolder2.getFileSystemPath(Win32ShellFolder2.java:579)
   at sun.awt.shell.Win32ShellFolderManager2.getPersonal(Win32ShellFolderManager2.java:155)
   at sun.awt.shell.Win32ShellFolder2$10.call(Win32ShellFolder2.java:678)
   at sun.awt.shell.Win32ShellFolder2$10.call(Win32ShellFolder2.java:665)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at sun.awt.shell.Win32ShellFolder2$ComTaskExecutor$3.run(Win32ShellFolder2.java:1214)
   at java.lang.Thread.run(Thread.java:679)
Caused by: java.io.IOException: Could not get shell folder ID list
   at sun.awt.shell.Win32ShellFolder2.getFileSystemPath0(Native Method)
   at sun.awt.shell.Win32ShellFolder2.access$1000(Win32ShellFolder2.java:75)
   at sun.awt.shell.Win32ShellFolder2$8.call(Win32ShellFolder2.java:581)
   at sun.awt.shell.Win32ShellFolder2$8.call(Win32ShellFolder2.java:579)
   at sun.awt.shell.Win32ShellFolder2$ComTask.execute(Win32ShellFolder2.java:1249)
   ... 10 more


So, no difference from not specifying the Path and LibPath.

The error log shows clearly that the problem is:-
java.io.IOException: Could not get shell folder ID list

I am also seeing this error with some other java apps.

With regard to our discussion about whether Odin is required: The above log indicates that Odin is *required* - note the references to Win32ShellFolder.

Regards

Pete





abwillis

It is true that Odin is required... it is also true that Java 1.6 is a native OS/2 app.  These both are true because Odin is a native OS/2 library and Java is compiled to be an OS/2 app and linked against the Odin library.

Joop

Quote from: Pete on 2011.10.06, 17:58:48
Hi Joop

Quote from: Joop on 2011.10.06, 04:38:48
Quote from: Pete on 2011.10.06, 03:13:32
Hi Joop,

No, java1.6 is not "native" as it works using the odin runtime and is therefore a win32 java not an os/2 java.

No, its native, Odin is only needed for wps. Its not a win32java, its not like java 1.42 or 1.5009 which are odin versions. From java 1.6 full source is available which is not the case with versions 1.42 and 1.5009.

Regards,
Joop



Yes, full source is available for openjava.

This is why it is a shame that the developers have opted for the win32 route.

Yes, you *DO* need Odin in order to run this java. Don't believe me? Either
1] read the java1.6 homepage http://svn.netlabs.org/java/ - look at the section Prerequisites. Do you see the requirement for Odin32 Library?
2] Or uninstall Odin and watch as your java apps do not run  :-)

Regards

Pete


I don't understand your reaction. No, the developers did not opted for the win32 route. They could buy the golden code, but that one is ages behind the present level, so lots of time in coding to catch up. The Sun variant had the trouble that it was up to level, but some smart guy at Suns had kicked out all OS/2 code, so again lots of work and money. The next version was what you think happened, take a Win32 Java and wrap it into Odin, this is what happened with versions 1.42 and 1.5009. Trouble was Odin source but the Win32 part is fixed and with trouble no solution for a bug fix. So they came up with take OpenJDK and rewrite it for Odin parts so Odin can take care of wps and other OS/2 things which were already there. Why invent the wheel again? So Java 1.6 is native OS/2. And its cost effective, otherwise we still had 1.5 whatever because they were still busy writing and it would cost a lot more money with a possible penalty that it would never see daylight because it became too expensive. So we need Odin and we need Java 1.6 in order to run Java apps. I never said that this was not true, I only said that this was not a Windows Java.

Regards,
Joop

Joop

Quote from: Pete on 2011.10.06, 18:34:03
It should not be necessary to add this java to Path or Libpath as I am starting java apps using Drive:\PathToJava\java(w).exe. However, I could be wrong... I'll have to give it a try.
Yes, you are, please read the readme of Java 1.6 ga.

Quote from: Pete on 2011.10.06, 18:34:03
As my HOME directory exists and java apps can use it the -Duser.home= parameter is not required.
Yes, mine exists too, but is heavily polluted and can grow exceptionally due too  packages like Laoe and Lobo which can dump huge files into the Home directory. Besides you missed the point. With -Duser.home= I can setup my Java app in such a way that all files concerning the app are in one directory including those which are normally saved in the Home directory. If I want to delete the package I have only one directory to delete and don't have to think on some Home directory on a other drive. Also its not always clear what a Java app dumps into the Home directory. But its your computer, its your freedom what to do.

Quote from: Pete on 2011.10.06, 18:34:03
So, I end up with this as a cmd file:-

BEGINLIBPATH=J:\Java\openJDK6\bin
SET PATH=J:\Java\openJDK6\bin;%PATH%
javaw.exe -jar J:\Java\Arachnophilia\Arachnophilia.jar
I never understood why the cmd file has to be as small as possible. It doesn't matter to OS/2. The cmd file gives us the opportunity to solve all kinds of problems, so why not use it?
As far as I know you can't setup a new BEGINLIBPATH this way, you always need SET in front of it. But I might be wrong. The beauty of the SET command is that you know that you are going to change something so you have to think twice what your doing.
Its not wise to setup PATH this way if you need different JAVA versions. That's why I do it in a different way so the PATH statement is only valid for this command file.
Your kickoff with javaw.exe should be just java.
Your setup of this cmd file is wrong. I don't know where I am. Due to BEGINLIBPATH and PATH statements your Java.exe can run. But the way you start the Java app is wrong. There is no way which tells that app that it is in the right directory. So I always go back to the root of the drive to ensure that I always have the same starting point. After that I switch to the directory of the Java app and start the app from there. In your example I could start this from station C: or everything else, in such case its logical that the app can't find other program parts.

Quote from: Pete on 2011.10.06, 18:34:03
Having started Arachnophilia using the above command file I try to use File, Open. The result:-

Error log for Arachnophilia 5.5 build 2619
Thu Oct 06 15:25:14 GMT 2011
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: java.io.IOException: Could not get shell folder ID list
   at sun.awt.shell.Win32ShellFolder2$ComTask.execute(Win32ShellFolder2.java:1258)
   at sun.awt.shell.Win32ShellFolder2.getFileSystemPath(Win32ShellFolder2.java:579)
   at sun.awt.shell.Win32ShellFolderManager2.getPersonal(Win32ShellFolderManager2.java:155)
It tells me that it can't find a part of the program, a part from Java or a part from Odin. So, all pointing too that the BEGINLIBPATH and PATH statements are not correct.

Quote from: Pete on 2011.10.06, 18:34:03
So, no difference from not specifying the Path and LibPath.
Yes, I'm afraid there are..

Quote from: Pete on 2011.10.06, 18:34:03
The error log shows clearly that the problem is:-
java.io.IOException: Could not get shell folder ID list
See above, it can't find a specific lib.

Quote from: Pete on 2011.10.06, 18:34:03
I am also seeing this error with some other java apps.
That's logic, you make the same error.

Quote from: Pete on 2011.10.06, 18:34:03
With regard to our discussion about whether Odin is required: The above log indicates that Odin is *required* - note the references to Win32ShellFolder.
The reference Win32ShellFolder is as far as I know some kind of standard program variable. It doesn't say what the programmer puts behind it. For me it means Windows 32 bit Shell Folder, or WPS. I don't see Microsoft Windows code.

Regards
Joop

Pete

Hi Joop

The readme file states:-

You will need to add the \bin subdirectory
  inside this directory to PATH and BEGINLIBPATH to allow for starting Java
  executables from an arbitrary location:

    set PATH=<directory>\bin;%PATH%
    set BEGINLIBPATH=<directory>\bin;%BEGINLIBPATH%



However, I am *not* starting from an arbitrary location; I use the full path to java(w).exe and the full path to the jar file.

Yes, You are right about SET BEGINLIBPATH. Sorry, a bad bit of copy'n'paste there as I do have the SET in front of BEGINLIBPATH.

The SET PATH=J:\Java\openJDK6\bin;%PATH% in the cmd file is only valid for the session started from the cmd file.

Using javaw.exe works fine for a lot of java apps.

For the above cmd file all that is needed is the full path to the jar file - all other java dependencies are within PATH and BEGINLIBPATH set in the cmd file.

The "java.io.IOException: Could not get shell folder ID list" error indicates that the problem is with java being unable to find drive/directory information. This error is either in java1.6 or the win32 runtime library. Hopefully I will get a response from posting the problem in both Odin32 and Java1.6 bugtrackers.

Of possible interest is the response from Paul Lutus when I posted the problem as a bug at http://www.arachnoid.com/arachnophilia/arach_email.php

"The error log which you kindly provided indicates otherwise -- it shows a problem with the OS/2 Java runtime engine, not Arachnophilia.

I know Arachnophilia works perfectly with a fully functional Java runtime engine, and all Java runtime engines must work the same. The OS/2 engine isn't meeting this contract.

To solve your problem, I would have to install OS/2, then try to persuade the OS/2 Java maintainers to fix their runtime engine after I provided them with proof the something was wrong with their Java engine. I seriously doubt they would do this, given the present status of OS/2.

But the problem is obvious -- "java.io.IOException: Could not get shell folder ID list". This means OS/2 is trying to appear to be a windows 32-bit native to Java, but it doesn't have everything that would require, including the ability to fetch a list of folders."


Regards

Pete



Joop

#14
Hi Pete

Quote from: Pete on 2011.10.07, 00:42:32
The readme file states:-
You will need to add the \bin subdirectory
 inside this directory to PATH and BEGINLIBPATH to allow for starting Java
 executables from an arbitrary location:

   set PATH=<directory>\bin;%PATH%
   set BEGINLIBPATH=<directory>\bin;%BEGINLIBPATH%

However, I am *not* starting from an arbitrary location; I use the full path to java(w).exe and the full path to the jar file.
You are ALWAYS starting from an arbitrary location because your are NOT IN the directory of JAVA.

Quote from: Pete on 2011.10.07, 00:42:32
Using javaw.exe works fine for a lot of java apps.
Using java.exe works fine with all java apps here.

Quote from: Pete on 2011.10.07, 00:42:32
For the above cmd file all that is needed is the full path to the jar file - all other java dependencies are within PATH and BEGINLIBPATH set in the cmd file.
Not always because the jar file itself does have dependencies which path is unknown in this setup.

Quote from: Pete on 2011.10.07, 00:42:32
The "java.io.IOException: Could not get shell folder ID list" error indicates that the problem is with java being unable to find drive/directory information. This error is either in java1.6 or the win32 runtime library. Hopefully I will get a response from posting the problem in both Odin32 and Java1.6 bugtrackers.
The error just says that it can't find a dll, ie "shell folder ID list", that doesn't say a thing about drive/directory. It clearly says that your path and libpath statements are faulty at some place. So check you path and libpath statement for both Java and Odin.

Quote from: Pete on 2011.10.07, 00:42:32
Of possible interest is the response from Paul Lutus when I posted the problem as a bug at http://www.arachnoid.com/arachnophilia/arach_email.php

"The error log which you kindly provided indicates otherwise -- it shows a problem with the OS/2 Java runtime engine, not Arachnophilia.
Yes, I always get such responds from Paul before, even with the old Java versions. Java 1.6 is the first in which Arachnophilia runs without problems.

Quote from: Pete on 2011.10.07, 00:42:32
I know Arachnophilia works perfectly with a fully functional Java runtime engine, and all Java runtime engines must work the same. The OS/2 engine isn't meeting this contract.
No, starting with 5.4 it is running without problems. If it did run perfectly the bugtracker of Arachnophilia would be empty, but it isn't.

Quote from: Pete on 2011.10.07, 00:42:32
But the problem is obvious -- "java.io.IOException: Could not get shell folder ID list". This means OS/2 is trying to appear to be a windows 32-bit native to Java, but it doesn't have everything that would require, including the ability to fetch a list of folders."
No, OS/2 is not trying to appear to be a windows 32 bit native to Java. OS/2 is trying nothing. There are a few ways in OS/2 to solve problems. One, write from scratch a native application, ie we'll never see a Java because it takes too much time and money. Two, port existing applications with the aid of libs which makes other OS-calls OS/2 calls. This is what is done with present Java. There was already Odin with the interface to OS/2, why invent this again? At Sun's some smart guy did erase all OS/2 code from the Java branches, putting it back again would cost lots of money and at least a year of programming. Besides, they don't have the expertise of OS/2 anymore. We could buy the Golden Code, that's native but ages behind present versions, ie, lots of money and lots of development time. Present solution is the most viable and we have all source code to fix problems. Fetching a list of folders doesn't give problems with any Java application on my machine.

I tried yesterday with Java 1.6 and Odin 7.1 and latest 6x together with Arachnophilia 5.4 and 5.5. Arachnophilia 5.4 did always run without problems but give lots of problems whatever combination I took. Arachnophilia 5.5 never gave a problem with whatever combination I took. This means that Java and Odin are okay, but that you have to delete everything in the home directory from Arachnophilia and start again. I never got the error messages you have and I did some weird things!

Why not try it my way, it runs without problems on my system and it runs with some problems on your system, take your pick!

Regards
Joop