Tag: 插件

如何更新/刷新eclipse插件中的视图?

我有一个带有单一视图的eclipse插件 (比如eclipse helloworld-view-plugin-project)。 在视图文件中, 当我想要更新视图时,我会收到一个事件 。 在此视图中,我在具有多个标签的组中具有GridData。 我有几个服务注册到程序,其状态应显示在此GridData中。 编辑:为了更好地显示我的问题,我更新了这篇文章并添加了整个代码: 的createPartControl(): public void createPartControl(Composite _parent) { parent = _parent; createContents(); addBindings(); makeActions(); contributeToActionBars(); } CreateContents(): protected void createContents() { // fixed checkIcon = //… errorIcon = //… smallFont = SWTResourceManager.getFont(“Segoe UI”, 7, SWT.NORMAL); // content gl_shell = new GridLayout(1, false); //margins, etc. for gl_shell parent.setLayout(gl_shell); final […]

如何提供插件模型,其中不同的插件采用不同的参数

我写的代码( MyService )包括每个客户在处理过程中的特定点插入自己的计算器的能力。 这是为了允许自定义业务规则。 在计算完成时,我们知道各种各样的事情,其中​​一些可能与计算有关。 将为特定的输入参数集创建MyService并运行一次。 我的计划是使用dependency injection在构造函数中为MyService提供calculator 。 这允许不同的用户插入他们自己的calculator 。 calculator将返回一个金额,表示此特定MyService运行应付的附加费。 其他人将实现各种计算器,我需要能够更新我的代码而不会破坏他们的代码。 即。 保持向后兼容性。 我遇到的问题是各种计算器实现需要不同的参数。 在创建MyService时,这些参数不能被构造函数注入到计算器中,因为不知道MyService某些处理发生了。 计算器只会在MyService的特定实例中调用一次。 因此,在一个极端,所有参数都可以在构造函数中传递,并且有一个方法没有返回答案的参数。 另一方面,所有参数都在方法调用中传递。 AlwaysZeroCalculator可能只return 0因此不需要参数。 PercentageCalculator需要amount才能应用百分比。 更复杂的需要amount和customerNumber 。 我们可以假设calculator可能需要的任何东西在运行时都是MyService已知的(或者它本身可以注入到calculator实现中,就像hibernate Session一样)。 我该如何实现呢? 以下是一些选项和问题: 使所有计算器实现一个包含所有参数作为方法参数的接口。 但是,如果添加额外的东西,那么他们都需要改变,这将不可避免地将其转变为第二种选择。 制作不同的接口( ICalculator , ICalculatorWithAmount , ICalculatorWithAmountAndCustomerNumber等)。 MyService需要查看它实现的calculator接口,将其转换为该接口,然后调用相应的calculate(..)方法。 引入一个参数对象,其中包含任何他们关心的任何内容。 这意味着即使是最简单的calculator取决于一切。 使MyService不同接口和不同版本期望其中一个接口。 注入calculatorFactory而不是calculator 。 工厂将采用所有可能的参数,并创建一个只有正确的计算器。 这似乎只是将问题转移到其他地方而没有解决它。 将一些可怕的hashmap传递给计算器并键入安全性,依赖性声明被诅咒 有没有更好的办法?

使用Gradle的JAR中的META-INF /服务

我想构建一个可以加载ServiceLoader的插件模块。 这需要将文件添加到META-INF/services目录,该目录以服务接口命名,并包含实现它的类的限定路径。 然后,您可以通过调用ServiceLoader.load()来加载这些服务。 这是一个例子: 假设我们想要提供一个名为org.example.plugins.PluginService的插件接口。 然后,我们在org.example.plugins.impl.ExamplePlugin类中提供此服务的实现。 如果我们想要某种插件机制,我们可以创建一个包含实现的JAR文件。 此JAR文件还必须包含文件META-INF/services/org.example.plugins.PluginService 。 该文件必须包含一行 org.example.plugins.impl.ExamplePlugin 使ServiceLoader能够找到实现。 如果该JAR文件位于构建路径中,则可以通过调用来加载插件 Iterator it = ServiceLoader.load(PluginService.class).iterator(); 该迭代器将允许您访问ServiceLoader找到的所有插件。 出于某种原因,Gradle默认情况下不会将文件包含到META-INF目录中。 有没有办法让生成的JAR包含这样的文件? 我已经在类Jar找到了方法metaInf 。 但我不知道groovy足以找到我自己的解决方案。

“安全设置阻止的应用程序”阻止在Linux上使用oracle SE 7更新51运行的applet

背景 在Linux上完成Oracle Java SDK(32位)的全新安装。 安装正确,插件已正确安装。 问题 当applet在Firefox中运行时,会出现以下错误(“安全设置阻止的应用程序”): 建立 以下是我使用的步骤: 在VBox上安装Linux mint 16: > uname -a Linux me-VirtualBox 3.11.0-12-generic #19-Ubuntu SMP Wed Oct 9 16:12:00 UTC 2013 i686 i686 i686 GNU/Linux 清除所有Java实例 。 按照说明在Linux上安装 jdk-7u51-linux-i586.tar.gz。 已validation的安装> java -version java version “1.7.0_51” Java(TM) SE Runtime Environment (build 1.7.0_51-b13) Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode) 已validation的插件: […]

第二次插件调用后收到Cordova插件回调

我创建了一个cordova插件(3.3.0),它启动一个活动并等待结果。 但回调(简单警报)直到插件第二次出现才开始调用。 这是代码: public boolean execute(String action, final JSONArray args, final CallbackContext cbc) throws JSONException { this.callbackContext = cbc; try { Intent i = new Intent(cordova.getActivity(), ActivityCamera.class); this.cordova.setActivityResultCallback(PhotoMokoPlugin.this); this.cordova.startActivityForResult(PhotoMokoPlugin.this, i, 0); PluginResult pr = new PluginResult(PluginResult.Status.NO_RESULT); pr.setKeepCallback(true); callbackContext.sendPluginResult(pr); return true; } catch (JSONException e) { callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); return false; } } @Override public void onActivityResult(int […]

Eclipse OSGi包重新获得另一个bundle的片段

这可能是一个简单的问题,但有时让我困惑。 我正在开发一个依赖谷歌guice的OSGi包。 Google guice有一个主要的捆绑和几个片段,如辅助注入片段。 在我的包中,我使用了辅助注入片段和从该片段导出的类。 但是在Eclipse中,我只能在另一个bundel(在本例中为guice包)上设置bundle依赖,而不是直接在片段上(辅助注入),因此Eclipse抱怨无法找到从片段中导出的类。 如何依赖bundle的片段?

如何在java中编写自己的插件加载器?

如何在我的java程序中实现插件工具? 我正在使用Java。 我当前的项目是与通用电子硬件相关的东西,它具有自定义命令集。 现在有一个通用的GUI,人们可以通过它访问硬件。 硬件在不同环境中以不同方式运行,即针对不同客户端。 现在的问题是GUI必须能够添加插件。 插件意味着,它必须能够为拥有该特权的客户提供特定设施。 从客户方面来说,添加插件非常简单,只需单击按钮即可添加特定工具。 我考虑插件的原因是,只有在交付核心产品后才会引入越来越多的设施。

列出所有可用的ResourceBundle文件

我正在使用ResourceBundle,我想给用户一个选择GUI语言的选项。 我想获得特定包下的所有资源文件的列表。 我不知道我将拥有哪些资源,因为此应用程序基于插件。 是否可以选择从java中搜索包下的所有可用资源? (如果不,我猜插件应该为它提供所有可用的本地) 谢谢你们

Maven,Proguard和assembly问题

我正在努力让Maven与ProGuard合作。 我想要实现的目标如下: 在我的源文件上运行ProGuard并生成混淆的类 创建一个引用主类的清单文件,以便我可以将其作为jar执行 解压所有相关的库jar并创建一个包含它们的巨大jar。 此文件只应与.class和.xml文件联系。 将它们组装成包含各种README.txt文件的.zip和tar.gz文件,依此类推。 到目前为止,我有这样的事情: org.apache.maven.plugins maven-jar-plugin 2.2 com.class.path.MainClass **/*.class **/*.xml com.pyx4me proguard-maven-plugin -allowaccessmodification true classes ${project.build.finalName}.jar ${project.build.directory} src/main/assembly/proguard.conf lib/rt.jar process-classes proguard maven-assembly-plugin assembly package assembly src/main/assembly/bin.xml 但我没有快乐。 任何人都可以给我任何模糊的指示吗? 先谢谢你,马特

用于热类重新加载的各种Java插件之间有什么区别?哪一个最直观?

我目前正在尝试在Java应用程序中实现热类重新加载 ,但是有很多插件可供选择,我找不到这些选项之间的良好比较 。 此外,插件的网站并不十分清楚具体function是什么以及如何使用它们。 还可以选择制作一个自定义的热门类重装ClassLoader ,但我觉得这类似于“重新发明轮子”,如果已经有这么多的插件可以完成这项工作..其他人是否同意这一点? 我发现的Java插件我认为可以完成这项工作: JRebel的 动态代码演进虚拟机(DCEVM) Fakereplace Apache Commons Java编译器Interace(JCI)FileAlterationMonitor(FAM) AgentSmith Feenix 玩框架 JBoss / WildFly OSGi的 那么有谁碰巧知道插件之间的差异是什么? 还有哪个插件最直观易用? 作为旁注:我实际想要做的是重新加载我的java应用程序的.jar文件依赖项。 我有一些java代码经常自动重新编译,然后转换为.jar文件。 它是我的java应用程序的依赖项,我的应用程序需要每次都使用此.jar文件的最新版本。