some jars not works well as bundles

34 views
Skip to first unread message

Guofeng Zhang

unread,
Dec 28, 2011, 4:40:21 AM12/28/11
to liftweb

Hi,

 

I deployed liftweb jars files as bundles to Felix framwrok 4.0.2. I find that the some bundles’ MANIFEST.MF are not generated correctly.

 

1.       lift-webkit

(a)     it exports and imports the following packages:

  Export-Package:net.liftweb.mocks,org.specs.specification,org.specs

      Import-Package:net.liftweb.mocks,org.specs,org.specs.specification

but these package are not packaged in the jar, so they should be removed from the import and export directive.

(b)     I have set LiftRules.getResource to load the templates from the web application bundle. The template is found but I got the error said “Expected ';'” (see the stack track at the end of the mail). I use HTML 5 and use Validator.nu (X)HTML5 Validator to check my template. It does not have error missing “;” (only has error said the row in table is defined improperly).

If I add “<DynamicImport-Package>*</DynamicImport-Package>” to the MANIFEST.MF, the template is displayed without problem.

 

So I think the MANIFEST.MF should also has <DynamicImport-Package>*</DynamicImport-Package> added, but I cannot figure out why. Your advice is appreciated.

 

2.       lift-util

It exports and imports the following packages:

Export-Package:org.apache.log4j,org.apache.log4j.xml,org.apache.log4j.spi

  Import-Package:org.apache.log4j,org.apache.log4j.xml,org.apache.log4j.spi

    It should be removed.

   

Because ClassHelpers use Class.forName() for resources or templates, so it should add the following in its MANIFEST.MF

   <DynamicImport-Package>*</DynamicImport-Package>

 

3.       lift-commons

it should import ch.qos.logback’s package optionally, or it will affect the OSGi framework’s log service. It should not initialize logback in such environment.

That is, its Import-Package directive should be:

ch.qos.logback.classic;resolution:=optional,

ch.qos.logback.core;resolution:=optional,

ch.qos.logback.core.util;resolution:=optional,

   ch.qos.logback.classic.joran;resolution:=optional

       ……

 

(b)’s stacktrack:

 

<div>

Error locating template:

<b>/index.html</b>

<br/>

Message:

<b>Expected ';'</b>

<br/>

<pre>

java.lang.RuntimeException: Expected ';'scala.sys.package$.error(package.scala:27)

scala.xml.parsing.MarkupParserCommon$class.takeUntilChar(MarkupParserCommon.scala:85)

scala.xml.parsing.MarkupParserCommon$class.normalizeAttributeValue(MarkupParserCommon.scala:145)

scala.xml.parsing.MarkupParserCommon$class.xAttributeValue(MarkupParserCommon.scala:76)

net.liftweb.util.PCDataXmlParser.xAttributeValue(PCDataMarkupParser.scala:98)

net.liftweb.util.PCDataXmlParser.xAttributes(PCDataMarkupParser.scala:113)

scala.xml.parsing.MarkupParser$class.mkAttributes(MarkupParser.scala:261)

net.liftweb.util.PCDataXmlParser.mkAttributes(PCDataMarkupParser.scala:98)

net.liftweb.util.PCDataXmlParser.mkAttributes(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParserCommon$class.xTag(MarkupParserCommon.scala:44)

net.liftweb.util.PCDataXmlParser.xTag(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:528)

net.liftweb.util.PCDataXmlParser.element1(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:396)

net.liftweb.util.PCDataXmlParser.content1(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.content(MarkupParser.scala:417)

net.liftweb.util.PCDataXmlParser.content(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:542)

net.liftweb.util.PCDataXmlParser.element1(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:396)

net.liftweb.util.PCDataXmlParser.content1(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.content(MarkupParser.scala:417)

net.liftweb.util.PCDataXmlParser.content(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.element1(MarkupParser.scala:542)

net.liftweb.util.PCDataXmlParser.element1(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.content1(MarkupParser.scala:396)

net.liftweb.util.PCDataXmlParser.content1(PCDataMarkupParser.scala:98)

scala.xml.parsing.MarkupParser$class.document(MarkupParser.scala:216)

net.liftweb.util.PCDataXmlParser.document(PCDataMarkupParser.scala:98)

net.liftweb.util.PCDataXmlParser$$anonfun$apply$6$$anonfun$apply$7.apply(PCDataMarkupParser.scala:194)

net.liftweb.util.PCDataXmlParser$$anonfun$apply$6$$anonfun$apply$7.apply(PCDataMarkupParser.scala:194)

net.liftweb.util.ControlHelpers$class.tryo(ControlHelpers.scala:46)

net.liftweb.util.Helpers$.tryo(Helpers.scala:34)

net.liftweb.util.ControlHelpers$class.tryo(ControlHelpers.scala:84)

net.liftweb.util.Helpers$.tryo(Helpers.scala:34)

net.liftweb.util.PCDataXmlParser$$anonfun$apply$6.apply(PCDataMarkupParser.scala:194)

net.liftweb.util.PCDataXmlParser$$anonfun$apply$6.apply(PCDataMarkupParser.scala:192)

net.liftweb.common.Full.flatMap(Box.scala:493)

net.liftweb.util.PCDataXmlParser$.apply(PCDataMarkupParser.scala:192)

net.liftweb.util.PCDataXmlParser$.apply(PCDataMarkupParser.scala:223)

net.liftweb.util.PCDataXmlParser$$anonfun$apply$2.apply(PCDataMarkupParser.scala:186)

net.liftweb.util.PCDataXmlParser$$anonfun$apply$2.apply(PCDataMarkupParser.scala:185)

net.liftweb.common.Full.flatMap(Box.scala:493)

net.liftweb.util.PCDataXmlParser$.apply(PCDataMarkupParser.scala:185)

net.liftweb.http.OldHtmlProperties$$anonfun$htmlParser$1.apply(HtmlProperties.scala:286)

net.liftweb.http.OldHtmlProperties$$anonfun$htmlParser$1.apply(HtmlProperties.scala:286)

net.liftweb.http.LiftRules$$anonfun$doWithResource$2.apply(LiftRules.scala:1081)

net.liftweb.http.LiftRules$$anonfun$doWithResource$2.apply(LiftRules.scala:1081)

net.liftweb.common.Full.map(Box.scala:491)

net.liftweb.http.LiftRules.doWithResource(LiftRules.scala:1081)

net.liftweb.http.Templates$.findRawTemplate(Templates.scala:209)

………………

 

I use 2.4-RC1.

 

Thanks

 

Guofeng

 

 

David Pollak

unread,
Dec 28, 2011, 9:59:44 AM12/28/11
to lif...@googlegroups.com
Lift does not support OSGi.  Sorry.

--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code



--
Visi.Pro, Cloud Computing for the Rest of Us http://visi.pro
Lift, the simply functional web framework http://liftweb.net


Reply all
Reply to author
Forward
0 new messages