java中简单的“检查更新”库

2023-12-22

我正在使用 Eclipse RCP,但是,主要是因为我完全控制了 UI(删除了所有贡献,从头开始进行首选项等),我只是无法接受所包含的更新管理器的复杂性和需求(另外,我不使用插件功能,并且应用程序插件必须被提取 - 尽管我可以解决最后一个问题)。

不管怎样,在第一种方法中我只想检查是否有可用的较新版本的应用程序。

合乎逻辑的方法是检查服务器上的文件(xml?)。

有没有好的库和示例?

Thanks.


Eclipse 现在支持 p2,这是一个比旧更新管理器更加灵活的系统。它可用于安装新软件并检查现有软件的更新。

您可以在没有 UI 的情况下包含 p2 的自我更新部分,尽管此处描述了包括“帮助”>“安装新更新”的完整过程http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application http://wiki.eclipse.org/Equinox/p2/Adding_Self-Update_to_an_RCP_Application

如果您使用某个功能,则 Eclipse 中的所有更新都更容易管理,但该功能是您可以将 RCP 应用程序插件标记为扩展为目录而不是 jar(它会自动执行)。

向任何应用程序添加自我更新并非易事。您是一次性更新所有罐子,还是只更新选定的罐子?同时更新哪些 jar 才有意义?使用基于 OSGi 的 eclipse,如何确保更新使系统处于工作状态? p2 的构建是为了帮助管理这些用例。看http://wiki.eclipse.org/P2 http://wiki.eclipse.org/P2

Edit:

可以使用 p2 API 添加简单的自我更新,而无需包含任何 UI 代码:

public class SelfUpdateOperation {
    public static void update() {
        BundleContext context = FrameworkUtil.getBundle(
                SelfUpdateOperation.class).getBundleContext();
        ServiceReference<?> reference = context
                .getServiceReference(IProvisioningAgent.SERVICE_NAME);
        if (reference == null)
            return;
        Object obj = context.getService(reference);
        IProvisioningAgent agent = (IProvisioningAgent) obj;
        ProvisioningSession session = new ProvisioningSession(agent);
        UpdateOperation update = new UpdateOperation(session);
        IStatus result = update.resolveModal(new NullProgressMonitor());
        if (result.isOK()) {
            update.getProvisioningJob(new NullProgressMonitor()).schedule();
        } else {
            // can't update for some reason
        }
        context.ungetService(reference);
    }
}

这需要一些工作(也许产品必须包含更新站点),但这就是基本的 API。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中简单的“检查更新”库 的相关文章

  • 使用 Maven 生成 Eclipse 项目文件

    当我尝试使用生成 Eclipse 项目文件时mvn eclipse eclipse我收到以下错误 插件管理器执行目标时出现内部错误 org apache maven plugins maven eclipse plugin 2 9 SNAP
  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • jvm中本机代码如何转换为机器代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我读过一些文章说 jvm将字节码转换为机器码 jvm将字节码转换为本机代码 jvm 将字节码转换为系统调用 系统调用又由操作系统与硬件
  • Java Spark DataFrameReader java.lang.NegativeArraySizeException

    学习 Spark for java 并尝试阅读 csv文件为DataFrame使用DataFrameReader 甚至不能得到一个超级简单的 csv文件工作 因为我不断收到异常java lang NegativeArraySizeExcep
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • AffineTransform.rotate() - 如何同时缩放、旋转和缩放?

    我有以下代码 它可以完成我想要绘制一个上面有一些棋子的棋盘的 第一部分 Image pieceImage getImage currentPiece int pieceHeight pieceImage getHeight null dou
  • 如何在 Java 中使用 StringUtils?

    我是 Java 初学者 我想用StringUtils replace但 Eclipse 输出 StringUtils cannot be resolved I tried import java lang 但它不起作用 java lang不
  • 我需要一个字数统计程序[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要弄清
  • 按文件名过滤 eclipse 中的警告

    我们使用 Eclipse 进行 Java 开发 并使用 Maven 将 JSP 编译成 servlet 以便在嵌入式 Jetty 实例中使用 这意味着要从 Eclipse 运行该项目 我必须包含 target jsp source 作为源文
  • SwingWorker 在另一个 SwingWorker 的 did 方法中

    首先 我需要通知您 我正在尽最大努力学习如何用 Java 编写代码 虽然有点困难 但我相信我能做到 我过去提交了几个有关 SwingWorkers 等的问题 每一个我都以为我已经做到了 但后来发现我仍然需要学习 希望这一次不是那样的一次 话
  • 如何在Java中打印保留2位小数的浮点数?

    我可以用System out print 您可以使用printf http java sun com j2se 1 5 0 docs api java io PrintStream html printf 28java lang Strin
  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • “___ 中的方法 ___() 是在无法访问的类或接口中定义的”编译错误

    我发现了一个奇怪的编译限制 我无法解释 并且我不明白这个限制的原因 示例1 考虑这些类 In package e1 public class C1 enum E1 A B C public E1 x In package e2 import
  • 春季MVC。方法参数字段的默认值

    我有一个带有方法测试的简单控制器 RequestMapping produces application json ResponseBody public HttpEntity
  • 如何在速度模板中检索哈希图值

    如何从速度模板中的以下哈希图中检索值 请帮忙 LinkedHashMap
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 获取Java中ResultSet返回的行数

    我用过一个ResultSet返回一定数量的行 我的代码是这样的 ResultSet res getData if res next System out println No Data Found while res next code t
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav

随机推荐

  • android Mediaplayer 更新到 5.0 后出现错误

    最近刚刚将我的 Galaxy s5 从 4 4 4 更新到 5 0 我的媒体播放器代码已损坏 在更新之前一切正常 我的 Nexus 7 平板电脑上也出现这种情况 我从服务器获取 url 并尝试从服务器流式传输 mp3 下面的代码全部在 on
  • Google Maps API v3 地理定位在 Google Chrome 中不起作用

    我正在使用 Google Maps API v3 Geolocation 来获取用户的实际位置 我从谷歌开发者那里找到了这篇文章 https developers google com maps documentation javascri
  • 使用多个数据数组对本机平面列表做出反应

    我是 RN 新手 需要一些帮助 我有一个像 title title price price subtitle subtitle 我想在 flatlist 中使用 2 个值 如下所示
  • CodeIgniter 中哪里可以格式化数字?

    我应该格式化我的数字吗1234 20 gt 1 234 20在模型中还是在视图中使用 php 和 codeigniter 它属于视图层 模型只关心价值 而不关心如何将其呈现给用户 此外 如果您的网站是多语言的 您可能需要以不同的方式显示它
  • 如何使用猫鼬模式验证密码长度?

    在我的猫鼬模式中 我使用下面的代码作为密码字段 但它不检查密码的最小长度 这里出了什么问题 password type String required true match d a z A Z minlength 5 它实际上工作正常 您可
  • 查找 Excel 工作表中的最后一个单元格?

    我正在使用 vb6 并将数据复制到 Excel 工作表 我需要做的是将数据附加到现有工作表 我现在需要找到工作表中最后一个单元格的索引号 只有一张工作表 我尝试了一些方法 例如oBook range cells specialcells x
  • Set-Service:无法停止服务,因为它依赖于其他服务

    当我运行以下命令时 Set Service ComputerName appserver Name MyService Status Stopped 我收到一条错误消息 Set Service Cannot stop service My
  • 将文件中的图像读/写到 BufferedImage 的最快方法?

    在 Java Grails 中将文件中的图像读入 BufferedImage 的最快方法是什么 在 Java Grails 中将 BufferedImage 中的图像写入文件的最快方法是什么 我的变体 阅读 byte imageByteAr
  • 使用或不使用 NI Vision 从二进制缓冲区/文件创建 LabVIEW IMAQ 图像

    假设您有一个表示二维图像的二进制缓冲区或文件 如何使用 LabVIEW 将二进制数据转换为 IMAQ 图像以便进一步处理 借助 NI 视觉 对于 LabVIEW 用户已安装 NI 视觉库的人 有一些 VI 允许从 2D 数组复制 IMAQ
  • execv() 和 fork() 浪费时间

    我目前正在学习fork and execv 我对组合的效率有疑问 我看到了以下标准代码 pid fork if pid lt 0 handle fork error else if pid 0 execv son prog argv son
  • System.WeakReference 的实际使用

    我明白什么系统 弱引用 http msdn microsoft com en us library ms404247 aspx确实如此 但我似乎无法理解它可能有用的实际例子 在我看来 这个课程本身就是一个黑客 在我看来 还有其他更好的方法来
  • Eclipse,在库中定义的开放声明

    在 Eclipse 中 如果我按 F3 或打开某个库中的引用的声明 它会打开代码的只读副本 我一开始认为这非常有用 因为它提醒我它的库代码和更改可能会影响更多项目 但我发现如果我确实想编辑 则必须手动查找 java 文件 这很痛苦 我可以
  • 是否可以在 apache flink CEP 中处理多个流?

    我的问题是 如果我们有两个原始事件流 即Smoke and 温度我们想知道是否有复杂的事件 即Fire通过将运算符应用于原始流已经发生了 我们可以在 Flink 中做到这一点吗 我问这个问题是因为到目前为止我所看到的 Flink CEP 的
  • 当行有子项时复制数据库中的行

    我需要复制表中的行 并复制通过其外键链接到其他表中的所有行 然后复制链接到这些行的所有行 问题是当我复制该行时 密钥将会改变 如何通过表之间的关系传播这些更改 您可以编写一个实现所有复制逻辑的存储过程 本质上 在主表中插入复制行 将新 ID
  • System.IO.DriveInfo 返回错误的磁盘空间值

    更新 这个问题不会出现在我测试过的 Android 设备上 它返回良好的值 非常感谢有关此事的任何指示 我无法从 Mac 台式计算机获取正确的可用空闲空间值 我正在使用 Unity3D C 并使用以下代码 DriveInfo drives
  • 如何为续集更新添加日志记录

    在我的项目中sequelize日志记录已禁用 但我希望在确切的查询中进行主动日志记录 我怎样才能做到这一点 TableModel update counter 0 where id itm i then res gt console log
  • 我可以在同一页面上使用多个版本的 jQuery 吗?

    我正在从事的一个项目需要在客户的网页上使用 jQuery 客户将插入我们将提供的一段代码 其中包括一些
  • 无法在 Meteor 中解码下载的字体

    这是我的CSS font face font family geometria lightlight src url Geometria Light webfont eot src url Geometria Light webfont e
  • PyQt 与 Sqlalchemy 集成

    我正在尝试通过 Sqlalchemy 将使用 PyQt 创建的表单添加到数据库中 但我猜我的代码有问题 我收到此错误 le Users tunji Desktop employee py line 57 in AddEmployee ses
  • java中简单的“检查更新”库

    我正在使用 Eclipse RCP 但是 主要是因为我完全控制了 UI 删除了所有贡献 从头开始进行首选项等 我只是无法接受所包含的更新管理器的复杂性和需求 另外 我不使用插件功能 并且应用程序插件必须被提取 尽管我可以解决最后一个问题 不