当前位置: 首页 > news >正文

银川网站开发公司音乐视频制作软件app

银川网站开发公司,音乐视频制作软件app,如何开发wordpress子主题,南京网站设计开发基于Maven构建OSGI应用。 使用Maven来构建项目#xff0c;包括项目的创建、子模块buldle的创建等。使用OSGI来实现动态模块化管理#xff0c;实现模块的热插拔效果#xff08;即插即用#xff09;。 创建一个Maven项目#xff1a;helloworld#xff0c;并在该项目下创建…基于Maven构建OSGI应用。 使用Maven来构建项目包括项目的创建、子模块buldle的创建等。使用OSGI来实现动态模块化管理实现模块的热插拔效果即插即用。 创建一个Maven项目helloworld并在该项目下创建两个Maven 子模块helloworld-client、helloworld-server。 创建 helloworld maven项目、填写参数及Advanced Settings 创建 helloworld-server maven子模块 同样的方式再创建 helloworl-client maven 子模块。 接下来就是 hellworld-server、helloworld-client 编码以及OSGI及编译打包配置。 OSGI及编译打包配置直接通过修改3个pom文件1个主pom、2个子模块的pom来配置最终配置结果如下 1代码结构 client-Activator.java package com.xxx.osgi.helloworld.client;import com.xxx.osgi.helloworld.server.HelloWorldImpl; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference;import java.util.Objects;/*** author frank* date 2023/12/8*/ public class Activator implements BundleActivator {public void start(BundleContext bundleContext) throws Exception {System.out.println(helloworld-client: start);System.out.println(helloworld-client: call server getHelloMsg());ServiceReferenceHelloWorldImpl reference bundleContext.getServiceReference(HelloWorldImpl.class);if (Objects.nonNull(reference)) {HelloWorldImpl service bundleContext.getService(reference);if (Objects.nonNull(service)) {String msg service.getHelloMsg(Frank);System.out.println(SUCCESS: return msg is:\n msg);} else {System.out.println(ERROR: service not found!);}bundleContext.ungetService(reference);} else {System.out.println(ERROR: service reference not found!);}}public void stop(BundleContext bundleContext) throws Exception {System.out.println(helloworld-client: stop);} } server-Activator.java package com.xxx.osgi.helloworld.server;import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference;import java.util.Dictionary; import java.util.Hashtable; import java.util.Objects;/*** author frank* date 2023/12/9*/ public class Activator implements BundleActivator {public void start(BundleContext bundleContext) throws Exception {System.out.println(helloworld-server: start);HelloWorldImpl server new HelloWorldImpl();DictionaryString, Object properties new HashtableString, Object();bundleContext.registerService(HelloWorldImpl.class, server, properties);System.out.println(helloworld-server: 服务已发布(注册)!);}public void stop(BundleContext bundleContext) throws Exception {System.out.println(helloworld-server: stop);} } server-IHelloWorld.java package com.xxx.osgi.helloworld.server;/*** author frank* date 2023/12/9*/ public interface IHelloWorld {String getHelloMsg(String name); } server-HelloWorldImpl.java package com.xxx.osgi.helloworld.server;/*** author frank* date 2023/12/9*/ public class HelloWorldImpl implements IHelloWorld {public String getMethodName() {return [ Thread.currentThread().getStackTrace()[2].getMethodName() : Thread.currentThread().getStackTrace()[2].getLineNumber() ] ;}public String getHelloMsg(String name) {return getMethodName() HelloWorld name;} } 2主pom project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.xxx.osgi/groupIdartifactIdhelloworld/artifactIdversion1.0.0-SNAPSHOT/versionmodulesmodulehelloworld-client/modulemodulehelloworld-server/module/modulespackagingpom/packagingnamehelloworld/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source8/maven.compiler.sourceparent.maven.bundle.plugin.version2.4.0/parent.maven.bundle.plugin.version/propertiesdependenciesdependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion3.8.1/versionscopetest/scope/dependencydependency!-- 该版本 maven 仓库找不到如果要用该版本可以在 Project Structure-Project Settings-Modules 中设置--!-- 设置 OSGI:General-Configure OSGI Core Library-Use Library 指定本地 jar 文件静态添加 osgi lib --!--groupIdorg.eclipse/groupIdartifactIdosgi/artifactIdversion3.18.600.v20231110-1900/versionscopeprovided/scope--!-- 该版本maven仓库可以找到可以用这个版本。在 pom 中指定 osgi lib 的 dependency 依赖 --groupIdorg.eclipse/groupIdartifactIdosgi/artifactIdversion3.10.0-v20140606-1445/versionscopeprovided/scope/dependency/dependencies /project 3hellworld-client 子模块pom project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdhelloworld/artifactIdgroupIdorg.xxx.osgi/groupIdversion1.0.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdhelloworld-client/artifactIdpackagingbundle/packagingnamehelloworld-client/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!-- osgi lib 使用主 pom 中定义的依赖子模块不再重复定义 osgi lib dependency --dependencygroupIdorg.xxx.osgi/groupIdartifactIdhelloworld-server/artifactIdversion${project.version}/version/dependency/dependenciesbuildpluginsplugin!-- osgi 打包配置使用 maven-bundle-plugin 插件进行 osgi 打包 bundle jar --!-- 使用maven-bundle-plugin打包方式时指定manifest文件不生效但可在 instructions 中配置 manifest 参数 --groupIdorg.apache.felix/groupIdartifactIdmaven-bundle-plugin/artifactIdversion${parent.maven.bundle.plugin.version}/versionextensionstrue/extensionsconfigurationinstructions!-- 如果要把依赖的 jar 也一起打包进去在 Import-Package 中指定、并设置 Embed-Dependency --!-- Embed-Dependency*;scopecompile|runtime/Embed-Dependency --Bundle-Name${project.name}/Bundle-NameBundle-SymbolicName$(replace;${project.artifactId};-;_)/Bundle-SymbolicNameBundle-Version${project.version}/Bundle-VersionBundle-Activatorcom.xxx.osgi.helloworld.client.Activator/Bundle-ActivatorImport-Packageorg.osgi.framework,com.xxx.osgi.helloworld.server;version${project.version}/Import-PackageExport-Packagecom.xxx.osgi.helloworld.client;version${project.version}/Export-Package/instructions/configuration/plugin/plugins/build /project4helloworld-server 子模块pom project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdhelloworld/artifactIdgroupIdorg.xxx.osgi/groupIdversion1.0.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdhelloworld-server/artifactIdpackagingbundle/packagingnamehelloworld-server/nameurlhttp://maven.apache.org/urlpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesdependencies!-- osgi lib 使用主 pom 中定义的依赖子模块不再重复定义 osgi lib dependency --/dependenciesbuildpluginsplugin!-- osgi 打包配置使用 maven-bundle-plugin 插件进行 osgi 打包 bundle jar --!-- 使用maven-bundle-plugin打包方式时指定manifest文件不生效但可在 instructions 中配置 manifest 参数 --groupIdorg.apache.felix/groupIdartifactIdmaven-bundle-plugin/artifactIdversion${parent.maven.bundle.plugin.version}/versionextensionstrue/extensionsconfigurationinstructions!-- 如果要把依赖的 jar 也一起打包进去在 Import-Package 中指定、并设置 Embed-Dependency --!-- Embed-Dependency*;scopecompile|runtime/Embed-Dependency --Bundle-Name${project.name}/Bundle-NameBundle-SymbolicName$(replace;${project.artifactId};-;_)/Bundle-SymbolicNameBundle-Version${project.version}/Bundle-VersionBundle-Activatorcom.xxx.osgi.helloworld.server.Activator/Bundle-ActivatorImport-Packageorg.osgi.framework/Import-PackageExport-Packagecom.xxx.osgi.helloworld.server;version${project.version}/Export-Package/instructions/configuration/plugin/plugins/build /project注意 iOSGI框架OSGI Library通过pom配置后自动manve刷新就可以自动在 Project Settings- Modules 中自动生成 OSGI 配置了包括OSGI Library也自设置了这里无需手动修改其他OSGI配置默认即可。根据pom自动生成的OSGI配置如下 Configure OSGI Core Library 点击打开显示如下 版本号就是pom中指定OSGI dependency 的版本。 iipom文件中配置打包插件使用maven-bundle-plugin 插件该插件是专门为OSGI打包提供的插件但是它不能导出 META-INF 中的内容到 Export-Package jar 包中。也就是说使用 maven-bundle-plugin 插件打包导出的 bundle jar 包中的 manifest 只能通过 pom.xml 文件中的 maven-bundle-plugin 打包参数项来配置不能直接指定使用自己项目中指定的 manifest 文件指定了也不生效。另外Project Settings - Modules 中的 Manifest Generation 配置也没有用。 另外maven-bundle-plugin 打包插件支持了一个标签 Embed-Dependency*;scopecompile|runtime/Embed-Dependency 有了这个标签可以直接把依赖的 jar 打入 bundle jar 包中去。 5编译打包 mvn clean package 执行命令就会生成目标jar文件 6添加 debug / run 配置可在idea中运行或调试 为client和server分别添加一个 debug/run 配置Bundle name配置中添加 4个 必须依赖的系统jar和各自子模块的jar 添加 debug/run 配置并运行后会自动生成  out 目录 7拷贝生成的 client server bundle(jar) 到OSGI环境执行 我本地Windows配置的OSGI运行环境位于d:\osgi\equinox\ d: cd d:\osgi\equinox\ d:\osgi\equinox ls  org.eclipse.osgi_3.18.600.v20231110-1900.jar plugins start.bat d:\osgi\equinox mkdir  my_bundles d:\osgi\equinox cp e:\ws2\qf\helloworld\helloworld-client\target\helloworld-client-1.0.0-SNAPSHOT.jar my_bundles\helloworld-client-1.0.0-SNAPSHOT.jar d:\osgi\equinox cp e:\ws2\qf\helloworld\helloworld-server\target\helloworld-server-1.0.0-SNAPSHOT.jar my_bundles\helloworld-server-1.0.0-SNAPSHOT.jar 8执行bundles install start bundlesserver需要先启动、再启动client 到此为止基于Maven构建OSGI应用示例完毕。 注意如果pom中指定maven.compiler.source8/maven.compiler.source时编译报错java: Compilation failed: internal java compiler error报错截图如下 检查下面几处相关设置是否正确 1检查File-Project Structure-Project Settings-Modules配置中的Dependencies-Module SDK 2检查Settings-Buile,Execution,Deployment-Compiler-Java Compiler设置Module的Per-module bytecode version-Target bytecode version 如果 Per-module bytecode version - Target bytecode version 不一致我最初默认是1.5、修改为一致8问题就解决了。
http://www.hkea.cn/news/14327599/

相关文章:

  • 个人网站设计主题搜索引擎主要包括三个部分
  • 上传设计作品的网站北京网站建设专家
  • 网站导航页面制作网页制作基础教程田田田田田田田田
  • 如何搭建门户网站建工教育网
  • 小型网站搭建建设银行网站怎么登录
  • 怎么做网站广告位学新媒体运营最好的培训学校
  • 制作网站注册登录模块的思维导图网站开发服务器怎么选
  • 网站分站开发计划书厦门正规网站建设企业
  • 网站 封锁右键沈阳网站建设技术支持
  • 优质的做网站农资网站建设
  • 如何优化wordpress网站有没有找外加工的活的平台
  • 济南做网站找哪家好网站群建设技术方案
  • 做二手货的网站有哪些网站建设kaicz
  • wordpress建站过程h5制作软件 知乎 推荐
  • 备案老域名首页关键词优化公司
  • 网站弄好了怎么推广外贸网站建设入门
  • 怎么做钓鱼网站吗wordpress json ld
  • 网站建设公司推荐q479185700顶上wordpress 文章幻灯片
  • 现在网站开发用什么合肥网页设计兼职
  • 海会主机做的网站都能干什么的南海网站建设多少钱
  • 做视频网站服务器配置免费申请网站 免备案
  • 台州网站建站公司荣耀官方网站手机商城
  • 大连成品网站建设wordpress 评论框 模板
  • 网站页脚怎么做仕德伟做的网站图片怎么修
  • 交互效果网站佛山app开发公司
  • 做外贸要访问国外的网站怎么办建设网站的视频
  • 福州网站建设免费咨询c2c模式的企业有哪些
  • wordpress建站论坛更新服务 wordpress
  • 自助下单网站怎么做wordpress ajax登录页面
  • 大学电子商务网站建设哪些行业需要做网站