OSGI 怎么添加额外的jar包

OSGI 怎么添加额外的jar包

已经有一个osgi的项目了  
但是我对它进行了更改  需要使用一些其他的jar包  
于是我把需要的jar包  build path 了   编写代码的时候不报错可是一运行还是  java.lang.NoClassDefFoundError!!!!!!!!!!!然后我在MANIFEST.MF中做了一些配置
Import-Package: javax.servlet;version="2.5.0",
 javax.servlet.http;version="2.5.0",
 javax.servlet.jsp;version="2.1.0",
 javax.servlet.jsp.jstl.core;version="1.1.2",
 net.sf.json,
 net.sf.json.filters,
 net.sf.json.groovy,
 net.sf.json.processors,
 net.sf.json.regexp,
 net.sf.json.test,
 net.sf.json.util,
 net.sf.json.xml,
 org.apache.activemq.command;version="5.2.0",
 org.apache.activemq.spring;version="5.2.0",
 org.springframework.jms.core;version="2.5.6.SEC01",
 org.springframework.jms.listener;version="2.5.6.SEC01",
 org.springframework.web.servlet;version="2.5.6.SEC01",
 org.springframework.web.servlet.mvc;version="2.5.6.SEC01",
 org.springframework.web.servlet.view;version="2.5.6.SEC01"
Web-ContextPath: demo
Bundle-ClassPath: WEB-INF/json/,
 .
Export-Package: net.sf.json,
 net.sf.json.filters,
 net.sf.json.groovy,
 net.sf.json.processors,
 net.sf.json.regexp,
 net.sf.json.test,
 net.sf.json.util,
 net.sf.json.xml
已经腻歪我两天了   求大侠指点迷津!!!!!!!!!!

解决方案 »

  1.  
  2.  

    我看了你的manifest.mf文件,你根本没有声明你的jar在bundle-classpath里面
    其实这样问题的解决方法有两个:
    一个是在你的bundle-classpath里面声明,如果在里面声明,千万别在声明import-package里面出现
    另外一个是:
    把你依赖的jar转换为OSGI的bundle,这个有专门的工具可以帮你的,google即可。
    然后使用import-bundle导入bundle,在import-package导入包!

      

     

  3.  

    第二种方法不知道你说的是哪个工具而第一种办法  我不知道该以怎样的格式书写   manifest.mf  文件还有就是能麻烦你把一个例子写出吗  比如说  添加WEB-INF/lib/json 下的各种jar包

      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Jetty 10之所以没有提供独立的jar包,是因为它采用了模块化的架构。在Jetty 9及之前的版本中,所有的模块和依赖都被打包成一个巨大的jar文件,这种做法在管理和部署方面存在一些问题。 为了解决这些问题,Jetty 10将其架构进行了重大改进。它采用了OSGi标准来实现模块化,这意味着每个功能模块都可以独立打包和部署,并且可以根据需要动态加载和卸载。这样做的好处是增加了灵活性和可维护性,同时还减少了应用程序的体积。 在Jetty 10中,我们需要使用Maven或其他构建工具来显式地引入我们需要的模块。例如,如果我们需要使用Jetty的Servlet模块,我们可以通过在pom.xml文件中添加相应的依赖来实现。这种方式让我们更加精确地管理我们的项目依赖,并且可以根据需求定制我们的应用程序。 尽管Jetty 10没有提供独立的jar包,但这并不意味着它变得更加复杂或难以使用。事实上,通过模块化的架构,Jetty 10为开发人员提供了更多的灵活性和控制权,并且使得项目的管理和部署更加容易。虽然需要一些额外的配置和学习成本,但这种改变为长期开发和维护带来了许多好处。 ### 回答2: Jetty是一个开源的Java HTTP服务器和Servlet容器。Jetty 10没有单独的jar包,而是采用了模块化的设计思路。Jetty 10使用了Java 9的模块化功能,这意味着Jetty 10的代码被分解为多个模块,每个模块都可以单独使用或者组合在一起。 传统的Jar文件包含了所有的类和依赖库,这意味着无论你是使用这些类和依赖库,你都需要添加整个Jar文件。这在某些情况下会导致冗余和冲突。 而使用模块化的设计,Jetty 10允许开发者按需选择所需要的模块,通过声明依赖关系,只引入必需的模块。这样可以减少冗余,并且避免冲突。因此,Jetty 10不再提供单独的jar包,而是以模块化的方式提供。 通过模块化的设计,Jetty可以更加灵活和可定制。开发者可以根据自己的需求选择需要的模块,减少不必要的资源消耗。同时,这也方便了Jetty的维护和版本管理,可以更好地支持新的Java版本和特性。 总之,Jetty 10不再提供单独的jar包,而是采用了模块化的设计。这样的设计让Jetty更加灵活、可定制,并且更好地适应了新的Java版本和特性。 ### 回答3: Jetty 10是一个开源的Java Web服务器和Servlet容器。与以往的Jetty版本不同,Jetty 10不再提供单独的可执行的jar包。这是因为Jetty 10采用了一种新的构建和部署模型,它更加灵活和模块化。 在Jetty 10中,整个服务器被拆分成了一系列的模块,每个模块都可以单独安装和使用,以满足不同的需求。这种模块化的设计使得Jetty 10更加轻量级,同时也方便了定制和扩展。 为了使用Jetty 10,你需要使用构建工具(如Maven)来导入所需的Jetty模块。你可以根据自己的需求选择要导入的模块,以构建一个适合你应用程序的定制化Jetty服务器。这种模块化的设计也使得Jetty 10更容易与其他开发工具和框架集成。 另外,Jetty 10还采用了Java 9的模块化系统,即Java Platform Module System(JPMS)。这使得Jetty 10可以更好地与Java 9及更高版本的JDK集成,并且能够在模块路径下运行。 总之,Jetty 10不提供单独的jar包是因为它采用了基于模块化的构建和部署模型,使得Jetty更加灵活、轻量级和可定制。使用Jetty 10时,你需要使用构建工具导入所需的模块,以构建一个适合你应用程序的定制化Jetty服务器。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值