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
--
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