Does our webstart work for you?
It works on my G4 PPC test system but not on a Mac mini with Java 6
I see you have three threads named AWT-something plus the Java2D
disposer. Are you doing Swing / AWT stuff in your app too? This is not
supported on Mac OS X.
Two AWT classes are currently used in the program (java.awt.Rectangle
and java.awt.image.BufferedImage) but removing them didnt solve the
problem, they were not responsible for the crash though.
The
best option is to modify the LauncherOSX.java file to make it work.
The LauncherOSX class first downloads and copies the .jar files into a
temp folder and puts them in the classpath using some rather crude
hacks, but it has proven to work in practice ;-). Do you have additional
.jar files? If so these also need to go the same route.
After a while of pondering and trial&error I managed to understand how
that one worked and change it accordingly. Strangely enough, it still
crashed with the same error message.
...If
you're using our qtjambi-macosx-gcc-4.4.0_01.jar file it should also be
set up correctly.
I use that one.
We could fix a part of the problem by moving the "ui = new
Ui_DmsMainWindow();" out of the constructor and putting it into the
declaration part:
**********************Old:************************
public class MainWindow extends QMainWindow {
.
.
.
private PreviewGrid previewGrid_;
private PreviewGrid previewSearchGrid_;
private QScrollArea previewBrowseScrollArea_;
private QScrollArea previewSearchScrollArea_;
private final Ui_DmsMainWindow ui_;
public MainWindow() {
super();
setWindowIcon(Icons.IDOKLOGO);
defineMainWindowCornerBehaviour();
ui_ = new Ui_DmsMainWindow();
ui_.setupUi(this);
QGridLayout layout = new QGridLayout(ui_.browsePreviewTab);
previewBrowseScrollArea_ = new QScrollArea();
layout.addWidget(previewBrowseScrollArea_);
.
.
.
}
.
.
.
}
***********************************************
**************New:*****************************
public class MainWindow extends QMainWindow {
.
.
.
Ui_DmsMainWindow ui_ = new Ui_DmsMainWindow();
private PreviewGrid previewGrid_;
private PreviewGrid previewSearchGrid_;
private QScrollArea previewBrowseScrollArea_;
private QScrollArea previewSearchScrollArea_;
// private final Ui_DmsMainWindow ui_;
public MainWindow() {
super();
setWindowIcon(Icons.IDOKLOGO);
defineMainWindowCornerBehaviour();
// ui_ = new Ui_DmsMainWindow();
ui_.setupUi(this);
QGridLayout layout = new QGridLayout(ui_.browsePreviewTab);
previewBrowseScrollArea_ = new QScrollArea();
layout.addWidget(previewBrowseScrollArea_);
.
.
.
}
.
.
.
}
****************************************
But not all problems could be solved by doing that...
We use a python script as jnlp file and when we use <application-desc
main-class="ch.idok.qtgui.LauncherHallo"/> there is some output in the
Java console and the GUI starts. but when using "<application-desc
main-class="ch.idok.qtgui.LauncherOSX"/>" the whole thing crashes again
creating pretty much the same error log as last time.
(both java files are attached to this mail)
For reference here is the relevant part of our jnlp file:
*****************************************
<jnlp codebase="http://%(host)s/" href="cgi-bin/qtgui.jnlp">
<information>
<title>iDok GUI application</title>
<vendor>iDok opensource project</vendor>
<homepage>http://www.idok.ch</homepage>
<description>Document management made easy: iDok Application based
on Qt Jambi Technology</description>
<description kind="short">iDok is made freely available under GPL
v2</description>
</information>
<resources>
<j2se version="1.5+"/>
<jar href="/ant_dist/qtgui.jar"/>
<jar href="/ant_dist/idok.jar"/>
<jar href="/lib/svnkit.jar"/>
<jar href="/lib/avalon-framework.jar"/>
<jar href="/lib/jacorb.jar"/>
<jar href="/lib/logkit.jar"/>
<jar href="/lib/qtjambi.jar"/>
<jar href="/lib/PDFRenderer.jar"/>
<property name="org.omg.CORBA.ORBClass" value="org.jacorb.orb.ORB"/>
<property name="org.omg.CORBA.ORBSingletonClass"
value="org.jacorb.orb.ORBSingleton"/>
<property
name="org.omg.PortableInterceptor.ORBInitializerClass.bidir_init"
value="org.jacorb.orb.giop.BiDirConnectionInitializer"/>
<property name="ORBInitRef.NameService"
value="corbaloc::%(host)s:1050/NameService"/>
<property name="ch.idok.service.client.provider"
value="ch.idok.service.client.corba.ClientProvider"/>
<property name="ch.idok.service.common.keypass"
value="P7GXtm6rPr5pT988N4Gm"/>
<property name="com.trolltech.launcher.webstart" value="true"/>
<property name="com.trolltech.qt.internal.jambipath" value=""/>
<property name="com.trolltech.qt.implicit-loading" value="false"/>
<property name="com.trolltech.qt.load-from-cache" value="true"/>
</resources>
<resources os="Windows" arch="x86">
<j2se version="1.5+"/>
<nativelib href="/lib/qtjambi-win32-gpl.jar"/>
<jar href="/lib/qtjambi-win32-gpl.jar"/>
<property name="com.trolltech.qt.pluginjars"
value="qtjambi-win32-gpl.jar"/>
</resources>
<resources os="Linux" arch="i386">
<j2se version="1.5+"/>
<nativelib href="/lib/qtjambi-linux32-gpl.jar"/>
<jar href="/lib/qtjambi-linux32-gpl.jar"/>
<property name="com.trolltech.qt.pluginjars"
value="qtjambi-linux32-gpl.jar"/>
</resources>
<resources os="Mac OS X">
<j2se version="1.5+" java-vm-args="-XstartOnFirstThread" />
<nativelib href="/lib/qtjambi-mac-gpl.jar"/>
<jar href="/lib/qtjambi-mac-gpl.jar"/>
<property name="com.trolltech.qt.pluginjars"
value="qtjambi-mac-gpl.jar"/>
</resources>
<application-desc main-class="ch.idok.qtgui.LauncherOSX"/>
<security>
<all-permissions/>
</security>
</jnlp>
**********************************************
While having one working and one crashing jnlp file that is nearly
exactly the same is somewhat peculiar, the real problem are the corba VM
parameters that had to be commented out in the launcher java files for
it to work. They enable some important features but even manage to crash
a simple "Hello World" Jambi application.
Could that be a problem with JacORB and Mac OSX + Jambi?
best regards
Florian
/****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of Qt Jambi.
**
** ** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at [EMAIL PROTECTED]
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
package ch.idok.qtgui;
import com.trolltech.qt.*;
import java.io.*;
import java.net.*;
public class LauncherHallo {
// private static final String JAVA_PATH_MACOSX = "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Commands/java";
//private static final String PLUGINS_JAR_MACOSX = "qtjambi-mac-gpl-" + Utilities.VERSION_STRING + ".jar";
private static void copy(URL sourceUrl, String destination) throws IOException {
System.out.println("using source: " + sourceUrl);
URLConnection connection = sourceUrl.openConnection();
if (connection instanceof JarURLConnection)
sourceUrl = ((JarURLConnection) connection).getJarFileURL();
else
throw new IllegalArgumentException("bad input url...: " + sourceUrl);
copy(sourceUrl.openStream(), new FileOutputStream(destination));
}
private static void copy(InputStream in, OutputStream out) throws IOException {
byte buffer[] = new byte[1024 * 64];
while (in.available() > 0) {
int read = in.read(buffer);
out.write(buffer, 0, read);
}
in.close();
out.close();
}
public static void main(String args[]) throws Exception {
String tmp = Utilities.jambiTempDir().getAbsolutePath();
new File(tmp).mkdirs();
copy(Thread.currentThread().getContextClassLoader().getResource("ch/idok/qtgui/DmsGui.class"),
tmp + "/qtgui.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("ch/idok/common/client/ClientHandler.class"),
tmp + "/idok.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("com/trolltech/qt/QtJambiObject.class"),
tmp + "/qtjambi.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/tmatesoft/svn/core/SVNURL.class"),
tmp + "/svnkit.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/apache/avalon/framework/logger/LogKit2AvalonLoggerAdapter.class"),
tmp + "/avalon-framework.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/jacorb/orb/ORB.class"),
tmp + "/jacorb.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/apache/log/LogKit.class"),
tmp + "/logkit.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("com/sun/pdfview/PDFViewer.class"),
tmp + "/PDFRenderer.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("lib/libQtCore.4.dylib"),
tmp + "/qtjambi-mac-gpl.jar");
StringBuffer cmd = new StringBuffer();
String javaLocation = System.getProperty("java.home") + "/bin/";
cmd.append(javaLocation + "java");
// classpath...
cmd.append(" -cp " + tmp + "/qtgui.jar:" + tmp + "/idok.jar:" + tmp + "/qtjambi.jar:" + tmp + "/svnkit.jar:" + tmp + "/avalon-framework.jar" + tmp + "/jacorb.jar:" + tmp + "/logkit.jar:" + tmp + "/PDFRenderer.jar:" + tmp + "/qtjambi-mac-gpl.jar");
// cmd.append(" -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB ");
// cmd.append(" -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton ");
// cmd.append(" -DORBInitRef.NameService=corbaloc::dms02.psi.ch:1050/NameService ");
// cmd.append(" -Dorg.omg.PortableInterceptor.ORBInitializerClass.bidir_init=org.jacorb.orb.giop.BiDirConnectionInitializer ");
// cmd.append(" -Dch.idok.service.server.principal=HTTP/[EMAIL PROTECTED] ");
// cmd.append(" -Dch.idok.service.client.provider=ch.idok.service.client.corba.ClientProvider ");
// cmd.append(" -Dch.idok.service.common.keypass=P7GXtm6rPr5pT988N4Gm ");
cmd.append(" -Dcom.trolltech.qt.internal.jambipath=");
cmd.append(" -Dcom.trolltech.qt.implicit-loading=false");
cmd.append(" -Dcom.trolltech.qt.load-from-cache=true");
cmd.append(" -XstartOnFirstThread");
cmd.append(" -Dcom.trolltech.launcher.webstart=true");
// the app itself...
cmd.append(" ch.idok.qtgui.DmsGui");
System.out.println(cmd.toString());
ProcessBuilder procBuilder = new ProcessBuilder(cmd.toString().split(" "));
System.out.println("x1");
Process proc = procBuilder.start();
System.out.println("x2");
proc.waitFor();
System.out.println("x3");
}
}
/****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of Qt Jambi.
**
** ** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at [EMAIL PROTECTED]
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
package ch.idok.qtgui;
import com.trolltech.qt.*;
import java.io.*;
import java.net.*;
public class LauncherOSX {
// private static final String JAVA_PATH_MACOSX = "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Commands/java";
//private static final String PLUGINS_JAR_MACOSX = "qtjambi-mac-gpl-" + Utilities.VERSION_STRING + ".jar";
private static void copy(URL sourceUrl, String destination) throws IOException {
System.out.println("using source: " + sourceUrl);
URLConnection connection = sourceUrl.openConnection();
if (connection instanceof JarURLConnection)
sourceUrl = ((JarURLConnection) connection).getJarFileURL();
else
throw new IllegalArgumentException("bad input url...: " + sourceUrl);
copy(sourceUrl.openStream(), new FileOutputStream(destination));
}
private static void copy(InputStream in, OutputStream out) throws IOException {
byte buffer[] = new byte[1024 * 64];
while (in.available() > 0) {
int read = in.read(buffer);
out.write(buffer, 0, read);
}
in.close();
out.close();
}
public static void main(String args[]) throws Exception {
if (System.getProperty("os.name").toLowerCase().contains("mac os x")) {
DmsGui.main(args);
return;
}
String tmp = Utilities.jambiTempDir().getAbsolutePath();
new File(tmp).mkdirs();
copy(Thread.currentThread().getContextClassLoader().getResource("ch/idok/qtgui/DmsGui.class"),
tmp + "/qtgui.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("ch/idok/common/client/ClientHandler.class"),
tmp + "/idok.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/tmatesoft/svn/core/SVNURL.class"),
tmp + "/svnkit.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/apache/avalon/framework/logger/LogKit2AvalonLoggerAdapter.class"),
tmp + "/avalon-framework.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/jacorb/orb/ORB.class"),
tmp + "/jacorb.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("org/apache/log/LogKit.class"),
tmp + "/logkit.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("com/trolltech/qt/QtJambiObject.class"),
tmp + "/qtjambi.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("com/sun/pdfview/PDFViewer.class"),
tmp + "/PDFRenderer.jar");
copy(Thread.currentThread().getContextClassLoader().getResource("lib/libQtCore.4.dylib"),
tmp + "/qtjambi-mac-gpl.jar");
StringBuffer cmd = new StringBuffer();
String javaLocation = System.getProperty("java.home") + "/bin/";
cmd.append(javaLocation + "java");
// classpath...
cmd.append(" -cp " + tmp + "/qtgui.jar:" + tmp + "/idok.jar:" + tmp + "/svnkit.jar:" + tmp + "/avalon-framework.jar" + tmp + "/jacorb.jar:" + tmp + "/logkit.jar:" + tmp + "/qtjambi.jar:" + tmp + "/PDFRenderer.jar:" + tmp + "/qtjambi-mac-gpl.jar");
// cmd.append(" -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB ");
// cmd.append(" -Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton ");
// cmd.append(" -DORBInitRef.NameService=corbaloc::dms02.psi.ch:1050/NameService ");
// cmd.append(" -Dorg.omg.PortableInterceptor.ORBInitializerClass.bidir_init=org.jacorb.orb.giop.BiDirConnectionInitializer ");
// cmd.append(" -Dch.idok.service.server.principal=HTTP/[EMAIL PROTECTED] ");
// cmd.append(" -Dch.idok.service.client.provider=ch.idok.service.client.corba.ClientProvider ");
// cmd.append(" -Dch.idok.service.common.keypass=P7GXtm6rPr5pT988N4Gm ");
cmd.append(" -Dcom.trolltech.qt.internal.jambipath=");
cmd.append(" -Dcom.trolltech.qt.implicit-loading=false");
cmd.append(" -Dcom.trolltech.qt.load-from-cache=true");
// cmd.append(" -Xms1024m -Xmx1024m -Xss512K -Xoss512K");
cmd.append(" -XstartOnFirstThread");
cmd.append(" -Dcom.trolltech.launcher.webstart=true");
// the app itself...
cmd.append(" ch.idok.qtgui.DmsGui");
System.out.println(cmd.toString());
ProcessBuilder procBuilder = new ProcessBuilder(cmd.toString().split(" "));
System.out.println("x1");
Process proc = procBuilder.start();
System.out.println("x2");
proc.waitFor();
System.out.println("x3");
}
}
_______________________________________________
Qt-jambi-interest mailing list
[email protected]
http://lists.trolltech.com/mailman/listinfo/qt-jambi-interest