Bug 498831

Summary: portecle fails to start: "unrecognized option -- `-splash.....', etc.
Product: [Fedora] Fedora Reporter: Tom London <selinux>
Component: portecleAssignee: Ville Skyttä <ville.skytta>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: ville.skytta
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 1.4-5 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-11-12 22:01:44 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 461683    
Bug Blocks:    

Description Tom London 2009-05-03 18:10:40 UTC
Description of problem:
Just installed portecle-1.4-2.fc11.noarch, but it fails to start:

[tbl@tlondon ~]$ portecle
gij: unrecognized option -- `-splash:/usr/share/doc/portecle-1.4/doc/images/splash.png'
Try `gij --help' for more information.
[tbl@tlondon ~]$ 

Commenting out the line in /usr/bin/portecle that defines "BASE_FLAGS" doesn't help:

[tbl@tlondon ~]$ portecle
Exception in thread "main" java.lang.NoClassDefFoundError: net.sf.portecle.FPortecle
   at java.lang.Class.initializeClass(libgcj.so.10)
Caused by: java.lang.ClassNotFoundException: javax.swing.RowSorter not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:/usr/share/java/bcprov.jar,file:/usr/share/java/portecle.jar,file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}}
   at java.net.URLClassLoader.findClass(libgcj.so.10)
   at java.lang.ClassLoader.loadClass(libgcj.so.10)
   at java.lang.ClassLoader.loadClass(libgcj.so.10)
   at java.lang.Class.initializeClass(libgcj.so.10)
[tbl@tlondon ~]$ 


Version-Release number of selected component (if applicable):
portecle-1.4-2.fc11.noarch

How reproducible:
every time

Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:

Comment 1 Ville Skyttä 2009-05-03 21:56:53 UTC
Which platform is this?  Have you changed the default Java for your system?  Portecle can't be run with gij/gcj, it requires Java 1.6 (OpenJDK).

What do the following commands output?

which java
java -version
/usr/sbin/update-alternatives --display java

Comment 2 Tom London 2009-05-04 13:20:39 UTC
Platform is x86_64; believe it is a "stock" F11-x86_64 Beta install, updated every day or so to Rawhide.

I haven't touched/changed Java (at least to my knowledege).

[tbl@tlondon ~]$ which java
/usr/bin/java
[tbl@tlondon ~]$ rpm -qa java\*
java-1.6.0-openjdk-1.6.0.0-20.b14.fc11.x86_64
java_cup-0.10k-2.x86_64
java-1.5.0-gcj-javadoc-1.5.0.0-25.fc11.x86_64
java-1.5.0-gcj-1.5.0.0-25.fc11.x86_64
java-1.5.0-gcj-devel-1.5.0.0-25.fc11.x86_64
java-1.6.0-openjdk-plugin-1.6.0.0-20.b14.fc11.x86_64
[tbl@tlondon ~]$ java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.4.1) (fedora-20.b14.fc11-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b08, mixed mode)
[tbl@tlondon ~]$ /usr/sbin/update-alternatives --display java
java - status is auto.
 link currently points to /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java - priority 16000
 slave javaws: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/javaws
 slave keytool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/keytool
 slave orbd: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/orbd
 slave pack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/pack200
 slave policytool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/policytool
 slave rmid: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmid
 slave rmiregistry: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/rmiregistry
 slave servertool: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/servertool
 slave tnameserv: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/tnameserv
 slave unpack200: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/unpack200
 slave jre_exports: /usr/lib/jvm-exports/jre-1.6.0-openjdk.x86_64
 slave jre: /usr/lib/jvm/jre-1.6.0-openjdk.x86_64
 slave java.1.gz: /usr/share/man/man1/java-java-1.6.0-openjdk.1.gz
 slave keytool.1.gz: /usr/share/man/man1/keytool-java-1.6.0-openjdk.1.gz
 slave orbd.1.gz: /usr/share/man/man1/orbd-java-1.6.0-openjdk.1.gz
 slave pack200.1.gz: /usr/share/man/man1/pack200-java-1.6.0-openjdk.1.gz
 slave policytool.1.gz: /usr/share/man/man1/policytool-java-1.6.0-openjdk.1.gz
 slave rmid.1.gz: /usr/share/man/man1/rmid-java-1.6.0-openjdk.1.gz
 slave rmiregistry.1.gz: /usr/share/man/man1/rmiregistry-java-1.6.0-openjdk.1.gz
 slave servertool.1.gz: /usr/share/man/man1/servertool-java-1.6.0-openjdk.1.gz
 slave tnameserv.1.gz: /usr/share/man/man1/tnameserv-java-1.6.0-openjdk.1.gz
 slave unpack200.1.gz: /usr/share/man/man1/unpack200-java-1.6.0-openjdk.1.gz
/usr/lib/jvm/jre-1.5.0-gcj/bin/java - priority 1500
 slave javaws: (null)
 slave keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool
 slave orbd: (null)
 slave pack200: (null)
 slave policytool: (null)
 slave rmid: (null)
 slave rmiregistry: /usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry
 slave servertool: (null)
 slave tnameserv: (null)
 slave unpack200: (null)
 slave jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj
 slave jre: /usr/lib/jvm/jre-1.5.0-gcj
 slave java.1.gz: (null)
 slave keytool.1.gz: (null)
 slave orbd.1.gz: (null)
 slave pack200.1.gz: (null)
 slave policytool.1.gz: (null)
 slave rmid.1.gz: (null)
 slave rmiregistry.1.gz: (null)
 slave servertool.1.gz: (null)
 slave tnameserv.1.gz: (null)
 slave unpack200.1.gz: (null)
Current `best' version is /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java.
[tbl@tlondon ~]$

Comment 3 Tom London 2009-05-04 14:47:35 UTC
A bit more:

[tbl@tlondon ~]$ sh -x portecle
+ . /usr/share/java-utils/java-functions
++ _JAVA_HOME=
++ '[' -f /etc/java/java.conf ']'
++ . /etc/java/java.conf
+++ JAVA_LIBDIR=/usr/share/java
+++ JNI_LIBDIR=/usr/lib/java
+++ JVM_ROOT=/usr/lib/jvm
+++ JAVACMD_OPTS=
++ '[' -f /home/tbl/.java/java.conf ']'
++ '[' '!' -z '' -a -d '' ']'
++ '[' -z '' -a -d /usr/lib/jvm/java ']'
++ JAVA_HOME=/usr/lib/jvm/java
++ '[' -z /usr/lib/jvm/java -a -d /usr/lib/jvm/jre ']'
+ '[' -f /etc/java/portecle.conf ']'
+ '[' -f /home/tbl/.porteclerc ']'
+ MAIN_CLASS=net.sf.portecle.FPortecle
+ BASE_FLAGS=-splash:/usr/share/doc/portecle-1.4/doc/images/splash.png
+ BASE_OPTIONS=
+ BASE_JARS='bcprov portecle'
+ set_jvm
+ '[' -n /usr/lib/jvm/java ']'
+ return
+ set_classpath bcprov portecle
+ jars='bcprov portecle'
+ '[' -n '' ']'
++ /usr/bin/build-classpath bcprov portecle
+ LOCAL_CLASSPATH=/usr/share/java/bcprov.jar:/usr/share/java/portecle.jar
+ CLASSPATH=/usr/share/java/bcprov.jar:/usr/share/java/portecle.jar:
+ set_flags -splash:/usr/share/doc/portecle-1.4/doc/images/splash.png
+ FLAGS=-splash:/usr/share/doc/portecle-1.4/doc/images/splash.png
+ '[' -n '' ']'
+ set_options
+ OPTIONS=
+ '[' -n '' ']'
+ run
+ set_javacmd
+ '[' -x '' ']'
+ set_jvm
+ '[' -n /usr/lib/jvm/java ']'
+ return
+ '[' -x /usr/lib/jvm/java/jre/sh/java ']'
+ '[' -x /usr/lib/jvm/java/bin/java ']'
+ JAVACMD=/usr/lib/jvm/java/bin/java
+ '[' '!' -x /usr/lib/jvm/java/bin/java ']'
+ '[' -n '' ']'
+ return 0
+ '[' -n '' ']'
+ exec /usr/lib/jvm/java/bin/java -splash:/usr/share/doc/portecle-1.4/doc/images/splash.png -classpath /usr/share/java/bcprov.jar:/usr/share/java/portecle.jar: net.sf.portecle.FPortecle
gij: unrecognized option -- `-splash:/usr/share/doc/portecle-1.4/doc/images/splash.png'
Try `gij --help' for more information.
[tbl@tlondon ~]$ 

But:

[root@tlondon ~]# ls -l /usr/lib/jvm/java/bin/java
lrwxrwxrwx. 1 root root 19 2009-04-14 16:37 /usr/lib/jvm/java/bin/java -> ../../../../bin/gij
[root@tlondon ~]# 


[root@tlondon ~]# ls -l /etc/alternatives/java_sdk
lrwxrwxrwx. 1 root root 27 2009-04-14 16:37 /etc/alternatives/java_sdk -> /usr/lib/jvm/java-1.5.0-gcj
[root@tlondon ~]#

Comment 4 Ville Skyttä 2009-05-04 16:00:09 UTC
Hmm, it looks to me that the jpackage scripts prefer a full java sdk (-devel) instead of just a jre when locating a java home.

What does 'rpm -qa "java*"' output?  I guess that you have the gcj devel package installed but do not have the openjdk devel one.  If that's correct, I suppose either removing java-1.5.0-gcj-devel or installing java-1.6.0-openjdk-devel would work around the problem.

Portecle should probably try harder to locate a 1.6.0+ java but I think this is also a jpackage-utils bug (assuming my guess above was correct).

Comment 5 Tom London 2009-05-04 16:38:59 UTC
[tbl@tlondon ~]$ rpm -qa java\*
java-1.6.0-openjdk-1.6.0.0-20.b14.fc11.x86_64
java_cup-0.10k-2.x86_64
java-1.5.0-gcj-javadoc-1.5.0.0-25.fc11.x86_64
java-1.5.0-gcj-1.5.0.0-25.fc11.x86_64
java-1.5.0-gcj-devel-1.5.0.0-25.fc11.x86_64
java-1.6.0-openjdk-plugin-1.6.0.0-20.b14.fc11.x86_64
[tbl@tlondon ~]$ 

Hmmm... Can't seem to cleanly be able to uninstall java-1.5.0-gcj-devel-1.5.0.0-25.fc11.x86_64, as eclipse-jdt and and seem to depend on it.

I installed java-1.6.0-openjdk-devel-1.6.0.0-20.b14.fc11.x86_64.rpm, and afterwards portecle works fine.

[tbl@tlondon ~]$ portecle
May 4, 2009 9:35:05 AM java.util.prefs.FileSystemPreferences$2 run
INFO: Created user preferences directory.
[tbl@tlondon ~]$ 

Also, I can now uninstall java-1.5.0-gcj-devel without ant and eclipse-jdt complaining.

Not sure why/how java*gcj-devel got installed.  Is it possible that somehow java*gcj would be "preferred" over java*openjdk?

Comment 6 Ville Skyttä 2009-05-04 17:12:33 UTC
Yep, as said, the scripts used to launch portecle (from jpackage-utils) always prefer a SDK (-devel) java instead of a jre which I think is a bug, see bug 461683.  Because you had java-1.5.0-gcj-devel installed and no other java*-devel packages, the scripts prefer gcj.

One more possible workaround that doesn't require installing/erasing any java-*-devel packages could be to add this to the top of your /usr/bin/portecle, before ". /usr/share/java-utils/java-functions":

JAVA_HOME=/usr/lib/jvm/jre-1.6.0

...but this is just a portecle specific hack and I think a more overall fix is required (most likely in jpackage-utils).

Comment 7 Bug Zapper 2009-06-09 15:04:40 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 11 development cycle.
Changing version to '11'.

More information and reason for this action is here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 8 Tom London 2009-07-24 17:54:53 UTC
I'm running rawhide now, and portecle-1.4-3.fc12.noarch works.....

Not sure how to resolve this BZ.....

Comment 9 Ville Skyttä 2009-07-25 19:42:53 UTC
It's possible that the problem reappears in some setups, I'll fix it in portecle once bug 461683 has been resolved.

Comment 10 Tom London 2009-11-05 21:18:37 UTC
Just updating.....

I'm seeing this with current Rawhide:

[tbl@tlondon ~]$ portecle
gij: unrecognized option -- `-splash:/usr/share/doc/portecle-1.4/doc/images/splash.png'
Try `gij --help' for more information.
[tbl@tlondon ~]$ 

Still have only gcj-devel installed:
[tbl@tlondon ~]$ rpm -qa java\*devel\*
java-1.5.0-gcj-devel-1.5.0.0-29.fc12.x86_64
[tbl@tlondon ~]$ 

Per comments above, I tried installing java-1.6.0-openjdk-devel (and javahelp2, netbeans-platform and swing-layout).

After that, portecle starts up like a champ.

Resetting this to "rawhide".

Comment 11 Ville Skyttä 2009-11-12 22:01:44 UTC
No maintainer comments in bug 461683 so I've added a workaround in portecle 1.4-5.
http://koji.fedoraproject.org/koji/taskinfo?taskID=1804118

Comment 12 Ville Skyttä 2010-05-08 16:48:22 UTC
Workaround purged in 1.5-2 now that bug 461683 is taken care of.