Re: [jnc-users] SWT compile
Status: Beta
Brought to you by:
soapy
From: Marco T. <mt...@gm...> - 2007-02-17 11:40:50
|
Lee D. Painter wrote: >> Please do not top post... > > Hmmm ok as you wish. Just in case you misunderstood that or feel offended: This is not to terrorize you, it is just a rule for using mailinglists because this is the only productive way of getting fast into the picture. For instance, I get a couple of dozens mails every day. I mostly don't know about the current discussion state. So it is a great time-saver if I can read the lines above the question to get into the picture again. Otherwise I had to always read the whole email what would really suck... So, usually, you help the people which try to help you when obeying the general unwritten(?) rules and people will tell you if you don't. In very worse case, your mail might just be ignored because it's inconvenient to read. thanks Marco >> Lee D. Painter wrote: >>> Hi Marco, >>> >>> I read Step 1 of the manual regarding the image handlers but did not > see >>> the FAQ reference about this error. >> I meant "Why do I get 'multiple definitions of ...' errors when >> excluding the GUI or JCE?": >> http://jnc.mtsystems.ch/frame_faq.html#multipleDefinitions > > Yes I understood that, I was just explaining that I did not see the FAQ > nor the reference to the multiple definitions error until you pointed > that out :-) > >>> Is it enough to remove the >>> org.eclipse.swt.awt package from the swt.jar or is there a better > way? >> Yes, that would suffice. But I suggest to uncheck the checkbox in the >> GUI when adding the jar, then only referenced classes from swt.jar > would >> be pulled in (thus leaving out org.eclipse.swt.awt.* and also result > in >> a smaller binary). >> > > Ok, I had misunderstood setting. > >>> Perhaps you already did this for JNC? >> Yes, check the screenshots on the homepage. They show how I compile > JNC >> with JNC ;-) You'll see that the checkbox for swt.jar is not checked > and >> thus org.eclipse.swt.awt.* won't be pulled in. >> >> >> Marco >> >>> Regards >>> >>> Lee >>> >>> PS: Yes I'm on the list. >>> >>>> -----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 >>>> >>>> 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 >>>> 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). >>>> >>>> >>>>> 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- >>>> 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 > :-) >>>> >>>> Marco >>>> >>>>> 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=new Foo(); >>>>>>> public static void main(String[] args) { >>>>>>> // TODO Auto-generated method stub >>>>>>> System.out.print("enter location of xml file to > read "); >>>>>>> BufferedReader input=new BufferedReader(new >>>>>> InputStreamReader(System.in)); >>>>>>> try >>>>>>> { >>>>>>> String sfile=input.readLine(); >>>>>>> file=new File(sfile); >>>>>>> readXml(); >>>>>>> System.out.print(contents); >>>>>>> writeXml(); >>>>>>> }catch(Exception _){_.printStackTrace();} >>>>>>> } >>>>>>> private static void writeXml() >>>>>>> { >>>>>>> SAXTransformerFactory > factory=(SAXTransformerFactory)SAXTransformerFactory.newInstance(); >>>>>>> try{ >>>>>>> StreamResult stream=new StreamResult(System.out); >>>>>>> TransformerHandler >> handler=factory.newTransformerHandler(); >>>>>>> Transformer trans=handler.getTransformer(); >>>>>>> trans.setOutputProperty > (OutputKeys.ENCODING,"ISO-8859-1"); >>>>>>> trans.setOutputProperty(OutputKeys.INDENT,"yes"); >>>>>>> handler.setResult(stream); >>>>>>> handler.startDocument(); >>>>>>> AttributesImpl atts=new 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=SAXParserFactory.newInstance(); // >>>>> the >>>>>> exception points to this line >>>>>>> factory.setValidating(false); >>>>>>> SAXParser parser=factory.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+="<"+qName+">"; >>>>>>> } >>>>>>> public void endElement(String uri, String localName, > String >>>>> qName) >>>>>> throws SAXException{ >>>>>>> contents+="<"+qName+"/>"; >>>>>>> } >>>>>>> public void characters(char[] buf,int offset,int >> length)throws >>>>>> SAXException{ >>>>>>> contents+=new String(buf,offset,length); >>>>>>> } >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> > ------------------------------------------------------------------------ >>>>>>> <?xml version=1.0 encoding=UTF-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=join.php&p=sourceforge&CID=DEVDE >>> V >>>>> _______________________________________________ >>>>> javaCompiler-users mailing list >>>>> jav...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/javacompiler-users >>>>> >>>> > ------------------------------------------------------------------------ >>> - >>>> 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=join.php&p=sourceforge&CID=DEVDE >>> V >>>> _______________________________________________ >>>> javaCompiler-users mailing list >>>> jav...@li... >>>> https://lists.sourceforge.net/lists/listinfo/javacompiler-users > |