Re: [jnc-users] SWT compile
Status: Beta
Brought to you by:
soapy
|
From: Lee D. P. <le...@3s...> - 2007-02-17 09:53:11
|
Hi Marco,
I read Step 1 of the manual regarding the image handlers but did not see
the FAQ reference about this error. Is it enough to remove the
org.eclipse.swt.awt package from the swt.jar or is there a better way?
Perhaps you already did this for JNC?=20
Regards
Lee
PS: Yes I'm on the list.=20
> -----Original Message-----
> From: jav...@li...
> [mailto:jav...@li...] On Behalf Of
> Marco Trudel
> Sent: 17 February 2007 08:42
> To: A mailing list for general questions and discussions.
> Subject: Re: [jnc-users] SWT compile
>=20
> Lee D. Painter wrote:
> > Hi Marco,
> >
> > I had previously had problems with an AWT compile, which after your
help
> > I was able to get working. The corrupted GIF image issue however
meant
>=20
> I released a new version of JNC (1.1) which fixes GIFs. But it seems
the
> new GCC version has introduced new trouble with AWT/Swing. I'm on it.
> So I still recommend to use SWT whenever possible (it will compile
> flawlessly, binaries will be smaller and the UI looks better).
>=20
>=20
> > that we cannot use the compiled .exe so we decided to add an SWT GUI
to
> > our agent, which honestly looks much better but I'm now seeing
errors
> > when attempting to build this.
> >
> > A search in our source code shows no trace of AWT or Swing, and the
> > compile completes with the exclude GUI option. The problem lies in
> > linking; here are some the errors I'm seeing. Any advice would be
very
> > much appreciated.
> >
> > I'm trying to build Windows .exe on Windows with gcc-119844-win.
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> >
mingw32/4.2.0/../../../libgcj.a(gui_java_awt.o):gui_java_awt.zip:(.text+
> > 0x20): multiple definition of
> > `java::awt::AWTPermission::AWTPermission(java::lang::String*)'
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> > mingw32/4.2.0/../../../libjncNoGui.a:noGui.jar:(.text+0x290): first
> > defined here
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> >
mingw32/4.2.0/../../../libgcj.a(gui_java_awt.o):gui_java_awt.zip:(.text+
> > 0xaa0): multiple definition of
> > `java::awt::Button::Button(java::lang::String*)'
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> > mingw32/4.2.0/../../../libjncNoGui.a:noGui.jar:(.text+0x2d0): first
> > defined here
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> >
mingw32/4.2.0/../../../libgcj.a(gui_java_awt.o):gui_java_awt.zip:(.text+
> > 0xc8f0): multiple definition of
> > `java::awt::GridBagConstraints::GridBagConstraints(int, int, int,
int,
> > double, double, int, int, java::awt::Insets*, int, int)'
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> > mingw32/4.2.0/../../../libjncNoGui.a:noGui.jar:(.text+0x150): first
> > defined here
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> >
mingw32/4.2.0/../../../libgcj.a(gui_java_awt.o):gui_java_awt.zip:(.text+
> > 0xca70): multiple definition of
> > `java::awt::GridBagLayout::GridBagLayout()'
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
> > mingw32/4.2.0/../../../libjncNoGui.a:noGui.jar:(.text+0x130): first
> > defined here
> >
> >
c:/tools/javanativecompiler-1.0.1/gcc-119844-win/bin/../lib/gcc/i686-pc-
>=20
> This is explained in the FAQ and in the manual. The problem is that
SWT
> uses AWT for the "org.eclipse.swt.awt" package. I assume you compile
the
> complete swt.jar into your binary. Thus you need AWT what of course
> unnecessary enlarges the binary.
> The solution here is to only import referenced classes from swt.jar.
> That will omit the "org.eclipse.swt.awt" package and additionally have
> the advantage of create a smaller binary.
> But please read the manual topic "Step 1 of 4: Source" since it will
> create new difficulties you have to consider. It's just a 10 lines
> description, so you won't have to spend a lot of time reading it :-)
>=20
>=20
> Marco
>=20
> > Regards
> >
> > Lee
> >> -----Original Message-----
> >> From: jav...@li...
> >> [mailto:jav...@li...] On Behalf
Of
> >> Marco Trudel
> >> Sent: 15 February 2007 08:02
> >> To: Steven Blade; A mailing list for general questions and
> > discussions.
> >> Subject: Re: [jnc-users] [javaCompiler-users] compiles and executes
> > but
> >> throws java exception --help
> >>
> >> Please always do "reply all", else we loose the mailinglist...
> >>
> >>
> >> Steven Blade wrote:
> >>> ok sure thing but please show me where to use the static block of
> > code
> >> ok.
> >>
> >> Thanks for the sample. Just put that code in an own class (as the
> >> attached XmlLoader.java) and add this class to the JNC compilation
> >> source. This will ensure that the needed objects are pulled into
the
> >> binary.
> >> You do not have to change your source.
> >>
> >>
> >>> did it work both ways with you reading and transforming xml ?
> >> Reading works, writing (transforming) fails. I'll create a
bugreport
> >> (it's probably a GNU classpath bug) and hope that the fix will be
in
> > JNC
> >> 1.2.
> >>
> >>> one more thing does that mean i have to use gnu's jar instead of
> > java's
> >> ?
> >>
> >> No, you only have to ensure that your binary contains the xml
stuff.
> >> This is done with the static initializer since it references the
xml
> >> stuff and thus ld - the linker - will add them.
> >>
> >>
> >> Marco
> >>
> >>
> >>> import java.io.BufferedReader;
> >>> import java.io.File;
> >>> import java.io.InputStreamReader;
> >>>
> >>> import javax.xml.parsers.SAXParser;
> >>> import javax.xml.parsers.SAXParserFactory;
> >>> import javax.xml.transform.OutputKeys;
> >>> import javax.xml.transform.Transformer;
> >>> import javax.xml.transform.sax.SAXTransformerFactory;
> >>> import javax.xml.transform.sax.TransformerHandler;
> >>> import javax.xml.transform.stream.StreamResult;
> >>>
> >>> import org.xml.sax.Attributes;
> >>> import org.xml.sax.SAXException;
> >>> import org.xml.sax.helpers.AttributesImpl;
> >>> import org.xml.sax.helpers.DefaultHandler;
> >>>
> >>>
> >>> public class Foo extends DefaultHandler{
> >>>
> >>> /**
> >>> * @param args
> >>> */
> >>> private static File file;
> >>> private static String contents;
> >>> private static Foo f=3Dnew Foo();
> >>> public static void main(String[] args) {
> >>> // TODO Auto-generated method stub
> >>> System.out.print("enter location of xml file to read ");
> >>> BufferedReader input=3Dnew BufferedReader(new
> >> InputStreamReader(System.in));
> >>> try
> >>> {
> >>> String sfile=3Dinput.readLine();
> >>> file=3Dnew File(sfile);
> >>> readXml();
> >>> System.out.print(contents);
> >>> writeXml();
> >>> }catch(Exception _){_.printStackTrace();}
> >>> }
> >>> private static void writeXml()
> >>> {
> >>> SAXTransformerFactory
> >> =
factory=3D(SAXTransformerFactory)SAXTransformerFactory.newInstance();
> >>> try{
> >>> StreamResult stream=3Dnew StreamResult(System.out);
> >>> TransformerHandler handler=3Dfactory.newTransformerHandler();
> >>> Transformer trans=3Dhandler.getTransformer();
> >>> trans.setOutputProperty (OutputKeys.ENCODING,"ISO-8859-1");
> >>> trans.setOutputProperty(OutputKeys.INDENT,"yes");
> >>> handler.setResult(stream);
> >>> handler.startDocument();
> >>> AttributesImpl atts=3Dnew AttributesImpl();
> >>> handler.startElement("", "", "test", atts);
> >>> atts.clear();
> >>> handler.startElement("", "", "foo", atts);
> >>> handler.characters(new char[]{'a','b','c'}, 0, 3);
> >>> handler.endElement("", "", "foo");
> >>> handler.endElement("", "", "test");
> >>> handler.endDocument();
> >>> }catch(Exception _){_.printStackTrace();}
> >>> }
> >>>
> >>> private static void readXml()
> >>> {
> >>> System.out.println("reading xml...");
> >>> try{
> >>> SAXParserFactory factory=3DSAXParserFactory.newInstance(); //
> > the
> >> exception points to this line
> >>> factory.setValidating(false);
> >>> SAXParser parser=3Dfactory.newSAXParser();
> >>> parser.parse (file, f.new OwnHandler());
> >>> }
> >>> catch(Exception _){_.printStackTrace();}
> >>> }
> >>>
> >>> private class OwnHandler extends DefaultHandler{
> >>>
> >>> public void startElement(String namespaceURI,
> >>> String sName,
> >>> String qName,
> >>> Attributes attrs) throws SAXException{
> >>> contents+=3D"<"+qName+">";
> >>> }
> >>> public void endElement(String uri, String localName, String
> > qName)
> >> throws SAXException{
> >>> contents+=3D"<"+qName+"/>";
> >>> }
> >>> public void characters(char[] buf,int offset,int length)throws
> >> SAXException{
> >>> contents+=3Dnew String(buf,offset,length);
> >>> }
> >>> }
> >>> }
> >>>
> >>>
> >>>
> >>>
> >>>
> >
------------------------------------------------------------------------
> >>> <?xml version=3D1.0 encoding=3DUTF-8?>
> >>> <test>
> >>> <line>testing java native compiler</line>
> >>> </test>
> >
> >
> >
------------------------------------------------------------------------
> -
> > Take Surveys. Earn Cash. Influence the Future of IT
> > Join SourceForge.net's Techsay panel and you'll get the chance to
share
> your
> > opinions on IT & business topics through brief surveys-and earn cash
> >
>
http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D=
DEVDE
V
> > _______________________________________________
> > javaCompiler-users mailing list
> > jav...@li...
> > https://lists.sourceforge.net/lists/listinfo/javacompiler-users
> >
>=20
>=20
>
------------------------------------------------------------------------
-
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to
share
> your
> opinions on IT & business topics through brief surveys-and earn cash
>
http://www.techsay.com/default.php?page=3Djoin.php&p=3Dsourceforge&CID=3D=
DEVDE
V
> _______________________________________________
> javaCompiler-users mailing list
> jav...@li...
> https://lists.sourceforge.net/lists/listinfo/javacompiler-users
|