CN111399927A - 应用共享Class文件的方法及装置、计算设备 - Google Patents

应用共享Class文件的方法及装置、计算设备 Download PDF

Info

Publication number
CN111399927A
CN111399927A CN201811530110.3A CN201811530110A CN111399927A CN 111399927 A CN111399927 A CN 111399927A CN 201811530110 A CN201811530110 A CN 201811530110A CN 111399927 A CN111399927 A CN 111399927A
Authority
CN
China
Prior art keywords
class file
application
shared
shared class
loaded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811530110.3A
Other languages
English (en)
Other versions
CN111399927B (zh
Inventor
韩永柏
刘清洁
董涛
卜云涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201811530110.3A priority Critical patent/CN111399927B/zh
Publication of CN111399927A publication Critical patent/CN111399927A/zh
Application granted granted Critical
Publication of CN111399927B publication Critical patent/CN111399927B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种应用共享Class文件的方法及装置、计算设备,其执行于未包含共享Class文件的第一应用中,方法包括:对Class文件进行加载,拦截第一应用加载Class文件时产生的异常;判断加载的Class文件是否为共享Class文件;若是,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。通过本发明实现多个应用间可以共享Class文件的调用,对共享Class文件使其不参与生成安装包的过程,从而减少应用安装包的体积。在加载共享Class文件时,可以只加载一个共享Class文件,满足多个应用对其的调用,加快加载速度,减少内存占用,有效降低内存开销。

Description

应用共享Class文件的方法及装置、计算设备
技术领域
本发明涉及软件领域,具体涉及一种应用共享Class文件的方法及装置、计算设备。
背景技术
基于插件化的应用软件中,宿主为安装在终端设备上可运行的应用软件主体,插件为无需安装通过插件化可以在宿主中运行的应用软件。利用插件化可以实现对宿主的更新,方便应用软件的升级。但这种方式导致插件和宿主中会存在相同的Class文件,即插件和宿主对相同的Class文件均进行了调用,相同的Class文件会在插件和宿主中保存多份(尤其当插件为多个时)。宿主和插件中均保存相同的Class文件会导致插件和宿主的体积过大,Class文件在被宿主和插件调用时,需要多次加载,使得加载速度变慢,占用大量内存,增大内存开销。
因此,针对这种插件化的应用软件,需要一种各应用共享Class文件的方法,以解决上述问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用共享Class文件的方法及装置、计算设备。
根据本发明的一个方面,提供了一种应用共享Class文件的方法,方法执行于未包含共享Class文件的第一应用中,其包括:
对Class文件进行加载,拦截第一应用加载Class文件时产生的异常;
判断加载的Class文件是否为共享Class文件;
若是,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。
根据本发明的另一方面,提供了一种应用共享Class文件的装置,装置执行于未包含共享Class文件的第一应用中,其包括:
拦截模块,适于对Class文件进行加载,拦截第一应用加载Class文件时产生的异常;
判断模块,适于判断加载的Class文件是否为共享Class文件;
获取模块,适于若判断模块判断加载的Class文件为共享Class文件,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述应用共享Class文件的方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述应用共享Class文件的方法对应的操作。
根据本发明提供的应用共享Class文件的方法及装置、计算设备,其执行于未包含共享Class文件的第一应用中,具体为:对Class文件进行加载,拦截第一应用加载Class文件时产生的异常;判断加载的Class文件是否为共享Class文件;若是,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。通过本发明实现多个应用间可以共享Class文件的调用,对共享Class文件使其不参与应用生成安装包的过程,从而减少应用安装包的体积。在加载共享Class文件时,可以只加载一个共享Class文件,满足多个应用对其的调用,加快加载速度,减少内存占用,有效降低内存开销。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的应用共享Class文件的方法的流程图;
图2示出了根据本发明另一个实施例的应用共享Class文件的方法的流程图;
图3示出了根据本发明一个实施例的应用共享Class文件的装置的功能框图;
图4示出了根据本发明一个实施例的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明基于插件化的应用实施,插件化应用包括有宿主和插件。考虑到实际实施时,插件化应用中一般包括一个宿主和多个插件。当宿主包含共享Class文件,而多个插件均未包含共享Class文件时,第一应用包括多个插件,第二应用为宿主;当宿主未包含共享Class文件,插件包含该共享Class文件时,第一应用为宿主,第二应用为插件;当宿主未包含共享Class文件,仅某个插件包含该共享Class文件,其他插件未包含共享Class文件时,第一应用为宿主和未包含共享Class文件的插件,第二应用为包含该共享Class文件的插件(即非第一应用的插件)。
图1示出了根据本发明一个实施例的应用共享Class文件的方法的流程图。如图1所示,应用共享Class文件的方法具体包括如下步骤:
步骤S101,对Class文件进行加载,拦截第一应用加载Class文件时产生的异常。
第一应用在执行时,会根据执行情况加载相应的Class文件,生成实例。在对Class文件进行加载时,若第一应用包含该Class文件,则可以正常加载该Class文件。若第一应用不包含该Class文件,在加载时会产生加载异常,为使第一应用可以继续正常运行,需拦截第一应用加载该Class文件时产生的异常。
进一步,由于加载时发生的异常多种多样,为更准确拦截本实施例中针对第一应用无法加载共享Class文件所产生的异常,可以在拦截时针对指定的加载异常进行拦截,如拦截无法找到Class文件的ClassNotFoundException异常。
步骤S102,判断加载的Class文件是否为共享Class文件。
在拦截加载Class文件时出现的异常后,还需要对加载的Class文件进行判断,确认其是否为共享Class文件。当其为共享Class文件时,执行步骤S103;否则,该加载的Class文件不是共享Class文件,加载该加载的Class文件所产生的异常为非共享Class文件加载产生的异常,按照正常加载处理逻辑处理该异常。
具体的,在判断加载的Class文件是否为共享Class文件时,可以根据预先设置的共享Class文件的白名单,判断加载的Class文件是否存在白名单中,若是,可以判断加载的Class文件为共享Class文件。
步骤S103,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。
当加载的Class文件为共享Class文件时,由于第一应用中没有包含共享Class文件,无法加载共享Class文件,给共享Class文件只能由包含共享Class文件的第二应用来加载。当第一应用为插件,第二应用为宿主时,可以直接从宿主中查找并获取共享Class文件返回给插件。但当第二应用不能明确确定时,需要先确定第二应用。具体的,根据共享Class文件的白名单以及共享Class文件的名称,如根据共享Class文件的名称查找白名单,获取白名单中记录的包含共享Class文件的第二应用。
由包含共享Class文件的第二应用根据共享Class文件的名称,加载共享Class文件并返回给第一应用,第一应用可以调用共享Class文件生成实例。
根据本发明提供的应用共享Class文件的方法,其执行于未包含共享Class文件的第一应用中,具体为:对Class文件进行加载,拦截第一应用加载Class文件时产生的异常;判断加载的Class文件是否为共享Class文件;若是,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。通过本发明实现多个应用间可以共享Class文件的调用,对共享Class文件使其不参与应用生成安装包的过程,从而减少应用安装包的体积。在加载共享Class文件时,可以只加载一个共享Class文件,满足多个应用对其的调用,加快加载速度,减少内存占用,有效降低内存开销。
图2示出了根据本发明另一个实施例的应用共享Class文件的方法的流程图。如图2所示,应用共享Class文件的方法具体包括如下步骤:
步骤S201,将共享Class文件设置为编译有效,使其在第一应用生成安装包时不包含共享Class文件。
在对第一应用生成安装包时,为减少安装包的体积,可以将共享Class文件设置为仅编译有效,可以使其在第一应用生成安装包时,安装包中不包含共享Class文件。如利用compileOnly或者provided等方法,使应用在生成安装包可以不包含共享Class文件。在生成安装包后,第二应用的安装包包含共享Class文件,第一应用的安装包未包含共享Class文件。需注意多个应用中至少有一个第二应用安装包包含共享Class文件。
步骤S202,在上下文文件中添加加载共享Class文件的自定义接口。
步骤S203,注入上下文文件,以便在加载共享Class文件时使用加载共享Class文件的自定义接口。
在第一应用运行时,需要从应用的安装包中加载各Class文件,但由于第一应用在生成安装包时,未包含共享Class文件。使用原生的加载Class文件接口会导致应用无法正常运行,因此需要针对共享Class文件为其配置加载共享Class文件的自定义接口,实现对共享Class文件的加载。
具体的,在上下文文件Context中,添加加载共享Class文件的自定义接口,替换原生的加载Class文件的接口,使得第一应用在加载Class文件时,使用加载共享Class文件的自定义接口实现对所需Class文件的记载。
步骤S204,对Class文件进行加载,拦截第一应用加载Class文件时产生的异常。
当第一应用需要加载Class文件时,使用加载共享Class文件的自定义接口对Class文件进行记载,若Class文件为非共享Class文件,应用安装包中包含该Class文件,该Class文件会被正常加载,无需进行拦截处理。若Class文件为共享Class文件,从第一应用安装包中直接加载Class文件,会产生加载异常,对应的拦截第一应用加载Class文件时产生的异常,继续对Class文件进行加载。
步骤S205,根据第一应用预先设置的依赖关系,判断第一应用依赖的第二应用是否包含加载的Class文件,以确定加载的Class文件是否为共享Class文件。
在判断加载的Class文件是否为共享Class文件时,即加载的Class文件未包含在第一应用中,而包含在非第一应用的其他应用中,可以根据第一应用预先设置的依赖关系,可以从第一应用所依赖的各个应用中查找其是否有包含加载的Class文件,若有,则可以确定加载的Class文件为共享Class文件,同时,可以确定包含有加载的Class文件的应用为第二应用。当确定加载的Class文件为共享Class文件后,执行步骤S206;否则,该加载的Class文件不是共享Class文件,加载该加载的Class文件所产生的异常为非共享Class文件加载产生的异常,按照正常加载处理逻辑处理该异常。
步骤S206,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。
从已经确定包含共享Class文件的第二应用中,根据共享Class文件的名称,可以实现第二应用加载并返回共享Class文件,返回的共享Class文件可以保存至内存中,第一应用可以调用共享Class文件生成实例。
根据本发明提供的应用共享Class文件的方法,第一应用与第二应用间存在依赖关系,在第一应用生成安装包时,不包含共享Class文件,第二应用生成安装包时包含共享Class文件。根据第一应用预先设置的依赖关系,确定共享Class文件以及确定第二应用,从而实现加载共享Class文件,以便第一应用调用共享Class文件生成实例。
图3示出了根据本发明一个实施例的应用共享Class文件的装置的功能框图。如图3所示,应用共享Class文件的装置包括如下模块:
拦截模块310适于:对Class文件进行加载,拦截第一应用加载Class文件时产生的异常。
判断模块320适于:判断加载的Class文件是否为共享Class文件。
获取模块330适于:若判断模块320判断加载的Class文件为共享Class文件,从包含共享Class文件的第二应用中查找并获取共享Class文件,以便第一应用调用共享Class文件生成实例。
可选地,判断模块320进一步适于:根据共享Class文件的白名单,判断加载的Class文件是否存在白名单中;若是,判断加载的Class文件为共享Class文件。
可选地,判断模块320进一步适于:根据第一应用预先设置的依赖关系,判断第一应用依赖的第二应用是否包含加载的Class文件;若是,判断加载的Class文件为共享Class文件。
可选地,装置还包括:确定模块340。
确定模块340适于:根据共享Class文件的白名单以及共享Class文件的名称,确定包含共享Class文件的第二应用。
可选地,获取模块330进一步适于:由包含共享Class文件的第二应用加载并返回共享Class文件,以便第一应用调用共享Class文件生成实例。
可选地,装置还包括:上下文模块350。
上下文模块350适于:在上下文文件中添加加载共享Class文件的自定义接口;注入上下文文件,以便在加载共享Class文件时使用加载共享Class文件的自定义接口。
可选地,装置还包括:打包模块360。
打包模块360适于:将共享Class文件设置为编译有效,使其在第一应用生成安装包时不包含共享Class文件。
以上各模块的描述参照方法实施例中对应的描述,在此不再赘述。
本申请还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的应用共享Class文件的方法。
图4示出了根据本发明一个实施例的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述应用共享Class文件的方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行上述任意方法实施例中的应用共享Class文件的方法。程序410中各步骤的具体实现可以参见上述应用共享Class文件的实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的应用共享Class文件的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:A1.一种应用共享Class文件的方法,所述方法执行于未包含共享Class文件的第一应用中,其包括:
对Class文件进行加载,拦截所述第一应用加载Class文件时产生的异常;
判断加载的Class文件是否为共享Class文件;
若是,从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
A2.根据A1所述的方法,其中,所述第一应用具体为宿主;所述第二应用包括至少一个插件;
或者,所述第一应用包括至少一个插件;所述第二应用具体为宿主;
或者,所述第一应用包括至少一个插件和宿主;所述第二应用为非第一应用的插件。
A3.根据A1或A2所述的方法,其中,所述判断加载的Class文件是否为共享Class文件进一步包括:
根据共享Class文件的白名单,判断加载的Class文件是否存在所述白名单中;
若是,判断加载的Class文件为共享Class文件。
A4.根据A1或A2所述的方法,其中,所述判断加载的Class文件是否为共享Class文件进一步包括:
根据所述第一应用预先设置的依赖关系,判断所述第一应用依赖的第二应用是否包含所述加载的Class文件;
若是,判断加载的Class文件为共享Class文件。
A5.根据A3所述的方法,其中,在所述从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例之前,所述方法还包括:
根据所述共享Class文件的白名单以及共享Class文件的名称,确定包含所述共享Class文件的第二应用。
A6.根据A1-A5中任一项所述的方法,其中,所述从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例进一步包括:
由包含所述共享Class文件的第二应用加载并返回所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
A7.根据A1-A6中任一项所述的方法,其中,在所述对Class文件进行加载之前,所述方法还包括:
在上下文文件中添加加载共享Class文件的自定义接口;
注入所述上下文文件,以便在加载共享Class文件时使用所述加载共享Class文件的自定义接口。
A8.根据A1-A7中任一项所述的方法,其中,对未包含共享Class文件的第一应用在生成安装包时,所述方法还包括:
将所述共享Class文件设置为编译有效,使其在所述第一应用生成安装包时不包含所述共享Class文件。
本发明还公开了:B9.一种应用共享Class文件的装置,所述装置执行于未包含共享Class文件的第一应用中,其包括:
拦截模块,适于对Class文件进行加载,拦截所述第一应用加载Class文件时产生的异常;
判断模块,适于判断加载的Class文件是否为共享Class文件;
获取模块,适于若所述判断模块判断加载的Class文件为共享Class文件,从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
B10.根据B9所述的装置,其中,所述第一应用具体为宿主;所述第二应用包括至少一个插件;
或者,所述第一应用包括至少一个插件;所述第二应用具体为宿主;
或者,所述第一应用包括至少一个插件和宿主;所述第二应用为非第一应用的插件。
B11.根据B9或B10所述的装置,其中,所述判断模块进一步适于:
根据共享Class文件的白名单,判断加载的Class文件是否存在所述白名单中;若是,判断加载的Class文件为共享Class文件。
B12.根据B9或B10所述的装置,其中,所述判断模块进一步适于:
根据所述第一应用预先设置的依赖关系,判断所述第一应用依赖的第二应用是否包含所述加载的Class文件;若是,判断加载的Class文件为共享Class文件。
B13.根据B11所述的装置,其中,所述装置还包括:
确定模块,适于根据所述共享Class文件的白名单以及共享Class文件的名称,确定包含所述共享Class文件的第二应用。
B14.根据B9-B13中任一项所述的装置,其中,所述获取模块进一步适于:
由包含所述共享Class文件的第二应用加载并返回所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
B15.根据B9-B14中任一项所述的装置,其中,所述装置还包括:
上下文模块,适于在上下文文件中添加加载共享Class文件的自定义接口;注入所述上下文文件,以便在加载共享Class文件时使用所述加载共享Class文件的自定义接口。
B16.根据B9-B15中任一项所述的装置,其中,所述装置还包括:
打包模块,适于将所述共享Class文件设置为编译有效,使其在所述第一应用生成安装包时不包含所述共享Class文件。
本发明还公开了:C17.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如A1-A8中任一项所述的应用共享Class文件的方法对应的操作。
本发明还公开了:D18.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如A1-A8中任一项所述的应用共享Class文件的方法对应的操作。

Claims (10)

1.一种应用共享Class文件的方法,所述方法执行于未包含共享Class文件的第一应用中,其包括:
对Class文件进行加载,拦截所述第一应用加载Class文件时产生的异常;
判断加载的Class文件是否为共享Class文件;
若是,从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
2.根据权利要求1所述的方法,其中,所述第一应用具体为宿主;所述第二应用包括至少一个插件;
或者,所述第一应用包括至少一个插件;所述第二应用具体为宿主;
或者,所述第一应用包括至少一个插件和宿主;所述第二应用为非第一应用的插件。
3.根据权利要求1或2所述的方法,其中,所述判断加载的Class文件是否为共享Class文件进一步包括:
根据共享Class文件的白名单,判断加载的Class文件是否存在所述白名单中;
若是,判断加载的Class文件为共享Class文件。
4.根据权利要求1或2所述的方法,其中,所述判断加载的Class文件是否为共享Class文件进一步包括:
根据所述第一应用预先设置的依赖关系,判断所述第一应用依赖的第二应用是否包含所述加载的Class文件;
若是,判断加载的Class文件为共享Class文件。
5.根据权利要求3所述的方法,其中,在所述从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例之前,所述方法还包括:
根据所述共享Class文件的白名单以及共享Class文件的名称,确定包含所述共享Class文件的第二应用。
6.根据权利要求1-5中任一项所述的方法,其中,所述从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例进一步包括:
由包含所述共享Class文件的第二应用加载并返回所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
7.根据权利要求1-6中任一项所述的方法,其中,在所述对Class文件进行加载之前,所述方法还包括:
在上下文文件中添加加载共享Class文件的自定义接口;
注入所述上下文文件,以便在加载共享Class文件时使用所述加载共享Class文件的自定义接口。
8.一种应用共享Class文件的装置,所述装置执行于未包含共享Class文件的第一应用中,其包括:
拦截模块,适于对Class文件进行加载,拦截所述第一应用加载Class文件时产生的异常;
判断模块,适于判断加载的Class文件是否为共享Class文件;
获取模块,适于若所述判断模块判断加载的Class文件为共享Class文件,从包含所述共享Class文件的第二应用中查找并获取所述共享Class文件,以便所述第一应用调用所述共享Class文件生成实例。
9.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7中任一项所述的应用共享Class文件的方法对应的操作。
10.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-7中任一项所述的应用共享Class文件的方法对应的操作。
CN201811530110.3A 2018-12-14 2018-12-14 应用共享Class文件的方法及装置、计算设备 Active CN111399927B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811530110.3A CN111399927B (zh) 2018-12-14 2018-12-14 应用共享Class文件的方法及装置、计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811530110.3A CN111399927B (zh) 2018-12-14 2018-12-14 应用共享Class文件的方法及装置、计算设备

Publications (2)

Publication Number Publication Date
CN111399927A true CN111399927A (zh) 2020-07-10
CN111399927B CN111399927B (zh) 2024-06-18

Family

ID=71430104

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811530110.3A Active CN111399927B (zh) 2018-12-14 2018-12-14 应用共享Class文件的方法及装置、计算设备

Country Status (1)

Country Link
CN (1) CN111399927B (zh)

Citations (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102915416A (zh) * 2012-09-18 2013-02-06 北京深思洛克软件技术股份有限公司 一种实现应用程序间虚拟物品安全共享的系统
CN103020524A (zh) * 2012-12-11 2013-04-03 北京奇虎科技有限公司 计算机病毒监控系统
US20130085774A1 (en) * 2011-10-04 2013-04-04 Yuanming Chen Semi-automated or fully automated, network and/or web-based, 3d and/or 4d imaging of anatomy for training, rehearsing and/or conducting medical procedures, using multiple standard x-ray and/or other imaging projections, without a need for special hardware and/or systems and/or pre-processing/analysis of a captured image data
CN103049695A (zh) * 2012-12-11 2013-04-17 北京奇虎科技有限公司 一种计算机病毒的监控方法和装置
CN103544039A (zh) * 2013-10-30 2014-01-29 北京国双科技有限公司 插件加载处理方法和装置
CN103618779A (zh) * 2013-11-21 2014-03-05 深圳Tcl新技术有限公司 资源共享的方法及系统
CN104298932A (zh) * 2014-10-27 2015-01-21 中国建设银行股份有限公司 一种so文件的调用方法及装置
US20150026700A1 (en) * 2013-07-16 2015-01-22 Damaka, Inc. System and method for providing additional functionality to existing software in an integrated manner
US20150033217A1 (en) * 2013-07-25 2015-01-29 Oracle International Corporation External platform extensions in a multi-tenant environment
CN104660624A (zh) * 2013-11-18 2015-05-27 珠海金山网络游戏科技有限公司 文件共享方法、装置及移动设备
CN104683477A (zh) * 2015-03-18 2015-06-03 哈尔滨工程大学 一种基于smb协议的共享文件操作过滤方法
US20150347682A1 (en) * 2011-10-04 2015-12-03 Quantant Technology Inc. Remote cloud based medical image sharing and rendering semi-automated or fully automated, network and/or web-based, 3d and/or 4d imaging of anatomy for training, rehearsing and/or conducting medical procedures, using multiple standard x-ray and/or other imaging projections, without a need for special hardware and/or systems and/or pre-processing/analysis of a captured image data
CN105159788A (zh) * 2015-09-11 2015-12-16 Tcl集团股份有限公司 一种Android应用间动态共享资源的方法及系统
CN105427096A (zh) * 2015-12-25 2016-03-23 北京奇虎科技有限公司 支付安全沙箱实现方法及系统与应用程序监控方法及系统
CN105528220A (zh) * 2014-09-28 2016-04-27 腾讯科技(深圳)有限公司 加载动态共享对象的方法和装置
CN105607944A (zh) * 2015-12-18 2016-05-25 北京奇虎科技有限公司 一种共享应用环境的方法及装置
CN105786562A (zh) * 2016-02-04 2016-07-20 百度在线网络技术(北京)有限公司 一种集成插件的方法和装置
US20160336006A1 (en) * 2015-05-13 2016-11-17 Microsoft Technology Licensing, Llc Discriminative data selection for language modeling
US20160352902A1 (en) * 2015-06-01 2016-12-01 AffectLayer, Inc. Modeling voice calls to improve an outcome of a call between a representative and a customer
WO2017011337A1 (en) * 2015-07-10 2017-01-19 Quantant Technology Inc. Remote cloud based medical image sharing and rendering
CN106790658A (zh) * 2017-01-19 2017-05-31 郑州云海信息技术有限公司 一种Docker网络插件实现方法
CN106878366A (zh) * 2016-06-20 2017-06-20 阿里巴巴集团控股有限公司 一种文件上传方法和装置
US20170187880A1 (en) * 2015-06-01 2017-06-29 AffectLayer, Inc. Coordinating voice calls between representatives and customers to influence an outcome of the call
CN106909833A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 一种安全防护方法和装置
US20170193229A1 (en) * 2015-12-30 2017-07-06 Symantec Corporation Systems and methods for automated generation of generic signatures used to detect polymorphic malware
CN106933570A (zh) * 2017-02-16 2017-07-07 北京临近空间飞行器系统工程研究所 一种基于插件技术的航天测发控软件平台
CN107025117A (zh) * 2016-01-29 2017-08-08 上海卓易科技股份有限公司 插件的加载方法及其系统
CN107104752A (zh) * 2016-02-23 2017-08-29 北京信威通信技术股份有限公司 一种下行csi-rs的发送方法
CN107292132A (zh) * 2016-03-30 2017-10-24 北京娜迦信息科技发展有限公司 用于安卓系统的共享对象文件的加载方法与装置
CN107479867A (zh) * 2017-06-12 2017-12-15 百度在线网络技术(北京)有限公司 应用软件插件化运行方法及装置
CN107528875A (zh) * 2016-08-02 2017-12-29 腾讯科技(深圳)有限公司 文件的下载方法和装置
US20180046710A1 (en) * 2015-06-01 2018-02-15 AffectLayer, Inc. Automatic generation of playlists from conversations
US9928056B1 (en) * 2016-10-10 2018-03-27 International Business Machines Corporation Operating system update management
US20180113682A1 (en) * 2016-10-20 2018-04-26 Johnson Controls Technology Company Building control manager with integrated engineering tool and controller application file application program interface (api)
CN107992308A (zh) * 2017-11-22 2018-05-04 竞技世界(北京)网络技术有限公司 一种安卓终端应用程序的插件化管理方法
CN108052314A (zh) * 2017-12-26 2018-05-18 无线生活(杭州)信息科技有限公司 一种基于Gradle的插件打包的方法及装置
CN108241500A (zh) * 2018-01-15 2018-07-03 腾讯科技(深圳)有限公司 一种硬件组件的修复方法、装置、系统和存储介质
CN108268299A (zh) * 2016-12-29 2018-07-10 航天信息股份有限公司 一种基于OpenStack云平台的Docker共享存储解决方法
CN108280178A (zh) * 2018-01-22 2018-07-13 南京市城市规划编制研究中心 一种多平台的空间信息资源协同共享方法
CN108418802A (zh) * 2018-02-02 2018-08-17 大势至(北京)软件工程有限公司 一种共享文件的访问控制方法及系统
CN108446160A (zh) * 2018-01-29 2018-08-24 中国电子科技网络信息安全有限公司 一种虚拟机隐藏进程检测方法及系统
CN108536594A (zh) * 2018-04-02 2018-09-14 腾讯科技(武汉)有限公司 页面测试方法、装置及存储设备
CN108681491A (zh) * 2018-05-04 2018-10-19 武汉极意网络科技有限公司 一种文件解耦方法及系统
CN108683747A (zh) * 2018-06-11 2018-10-19 华为技术有限公司 资源获取、分发、下载方法、装置、设备及存储介质
CN108762833A (zh) * 2018-05-16 2018-11-06 北京安云世纪科技有限公司 安卓系统中的应用启动方法和装置
CN108932427A (zh) * 2018-05-18 2018-12-04 华中科技大学 一种Android应用多开环境中限制访问的控制方法及系统
CN108965348A (zh) * 2018-10-12 2018-12-07 深圳前海微众银行股份有限公司 网络安全防护方法、设备及计算机可读存储介质

Patent Citations (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130085774A1 (en) * 2011-10-04 2013-04-04 Yuanming Chen Semi-automated or fully automated, network and/or web-based, 3d and/or 4d imaging of anatomy for training, rehearsing and/or conducting medical procedures, using multiple standard x-ray and/or other imaging projections, without a need for special hardware and/or systems and/or pre-processing/analysis of a captured image data
US20150347682A1 (en) * 2011-10-04 2015-12-03 Quantant Technology Inc. Remote cloud based medical image sharing and rendering semi-automated or fully automated, network and/or web-based, 3d and/or 4d imaging of anatomy for training, rehearsing and/or conducting medical procedures, using multiple standard x-ray and/or other imaging projections, without a need for special hardware and/or systems and/or pre-processing/analysis of a captured image data
CN102915416A (zh) * 2012-09-18 2013-02-06 北京深思洛克软件技术股份有限公司 一种实现应用程序间虚拟物品安全共享的系统
CN103020524A (zh) * 2012-12-11 2013-04-03 北京奇虎科技有限公司 计算机病毒监控系统
CN103049695A (zh) * 2012-12-11 2013-04-17 北京奇虎科技有限公司 一种计算机病毒的监控方法和装置
US20150026700A1 (en) * 2013-07-16 2015-01-22 Damaka, Inc. System and method for providing additional functionality to existing software in an integrated manner
EP3022903A1 (en) * 2013-07-16 2016-05-25 Damaka, Inc. System and method for providing additional functionality to existing software in an integrated manner
US20160139911A1 (en) * 2013-07-25 2016-05-19 Oracle International Corporation External platform extensions in a multi-tenant environment
US20150033365A1 (en) * 2013-07-25 2015-01-29 Oracle International Corporation External platform extensions in a multi-tenant environment
US20170078302A1 (en) * 2013-07-25 2017-03-16 Oracle International Corporation External platform extensions in a multi-tenant environment
US20150033217A1 (en) * 2013-07-25 2015-01-29 Oracle International Corporation External platform extensions in a multi-tenant environment
CN103544039A (zh) * 2013-10-30 2014-01-29 北京国双科技有限公司 插件加载处理方法和装置
CN104660624A (zh) * 2013-11-18 2015-05-27 珠海金山网络游戏科技有限公司 文件共享方法、装置及移动设备
CN103618779A (zh) * 2013-11-21 2014-03-05 深圳Tcl新技术有限公司 资源共享的方法及系统
CN105528220A (zh) * 2014-09-28 2016-04-27 腾讯科技(深圳)有限公司 加载动态共享对象的方法和装置
CN104298932A (zh) * 2014-10-27 2015-01-21 中国建设银行股份有限公司 一种so文件的调用方法及装置
CN104683477A (zh) * 2015-03-18 2015-06-03 哈尔滨工程大学 一种基于smb协议的共享文件操作过滤方法
US20160336006A1 (en) * 2015-05-13 2016-11-17 Microsoft Technology Licensing, Llc Discriminative data selection for language modeling
US20170187880A1 (en) * 2015-06-01 2017-06-29 AffectLayer, Inc. Coordinating voice calls between representatives and customers to influence an outcome of the call
US20180046710A1 (en) * 2015-06-01 2018-02-15 AffectLayer, Inc. Automatic generation of playlists from conversations
US20160352902A1 (en) * 2015-06-01 2016-12-01 AffectLayer, Inc. Modeling voice calls to improve an outcome of a call between a representative and a customer
US20160352907A1 (en) * 2015-06-01 2016-12-01 AffectLayer, Inc. Coordinating voice calls between representatives and customers to influence an outcome of the call
WO2017011337A1 (en) * 2015-07-10 2017-01-19 Quantant Technology Inc. Remote cloud based medical image sharing and rendering
CN105159788A (zh) * 2015-09-11 2015-12-16 Tcl集团股份有限公司 一种Android应用间动态共享资源的方法及系统
CN105607944A (zh) * 2015-12-18 2016-05-25 北京奇虎科技有限公司 一种共享应用环境的方法及装置
CN106909833A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 一种安全防护方法和装置
CN105427096A (zh) * 2015-12-25 2016-03-23 北京奇虎科技有限公司 支付安全沙箱实现方法及系统与应用程序监控方法及系统
US20170193229A1 (en) * 2015-12-30 2017-07-06 Symantec Corporation Systems and methods for automated generation of generic signatures used to detect polymorphic malware
CN107025117A (zh) * 2016-01-29 2017-08-08 上海卓易科技股份有限公司 插件的加载方法及其系统
CN105786562A (zh) * 2016-02-04 2016-07-20 百度在线网络技术(北京)有限公司 一种集成插件的方法和装置
CN107104752A (zh) * 2016-02-23 2017-08-29 北京信威通信技术股份有限公司 一种下行csi-rs的发送方法
CN107292132A (zh) * 2016-03-30 2017-10-24 北京娜迦信息科技发展有限公司 用于安卓系统的共享对象文件的加载方法与装置
CN106878366A (zh) * 2016-06-20 2017-06-20 阿里巴巴集团控股有限公司 一种文件上传方法和装置
CN107528875A (zh) * 2016-08-02 2017-12-29 腾讯科技(深圳)有限公司 文件的下载方法和装置
US9928056B1 (en) * 2016-10-10 2018-03-27 International Business Machines Corporation Operating system update management
US20180113682A1 (en) * 2016-10-20 2018-04-26 Johnson Controls Technology Company Building control manager with integrated engineering tool and controller application file application program interface (api)
CN108268299A (zh) * 2016-12-29 2018-07-10 航天信息股份有限公司 一种基于OpenStack云平台的Docker共享存储解决方法
CN106790658A (zh) * 2017-01-19 2017-05-31 郑州云海信息技术有限公司 一种Docker网络插件实现方法
CN106933570A (zh) * 2017-02-16 2017-07-07 北京临近空间飞行器系统工程研究所 一种基于插件技术的航天测发控软件平台
CN107479867A (zh) * 2017-06-12 2017-12-15 百度在线网络技术(北京)有限公司 应用软件插件化运行方法及装置
CN107992308A (zh) * 2017-11-22 2018-05-04 竞技世界(北京)网络技术有限公司 一种安卓终端应用程序的插件化管理方法
CN108052314A (zh) * 2017-12-26 2018-05-18 无线生活(杭州)信息科技有限公司 一种基于Gradle的插件打包的方法及装置
CN108241500A (zh) * 2018-01-15 2018-07-03 腾讯科技(深圳)有限公司 一种硬件组件的修复方法、装置、系统和存储介质
CN108280178A (zh) * 2018-01-22 2018-07-13 南京市城市规划编制研究中心 一种多平台的空间信息资源协同共享方法
CN108446160A (zh) * 2018-01-29 2018-08-24 中国电子科技网络信息安全有限公司 一种虚拟机隐藏进程检测方法及系统
CN108418802A (zh) * 2018-02-02 2018-08-17 大势至(北京)软件工程有限公司 一种共享文件的访问控制方法及系统
CN108536594A (zh) * 2018-04-02 2018-09-14 腾讯科技(武汉)有限公司 页面测试方法、装置及存储设备
CN108681491A (zh) * 2018-05-04 2018-10-19 武汉极意网络科技有限公司 一种文件解耦方法及系统
CN108762833A (zh) * 2018-05-16 2018-11-06 北京安云世纪科技有限公司 安卓系统中的应用启动方法和装置
CN108932427A (zh) * 2018-05-18 2018-12-04 华中科技大学 一种Android应用多开环境中限制访问的控制方法及系统
CN108683747A (zh) * 2018-06-11 2018-10-19 华为技术有限公司 资源获取、分发、下载方法、装置、设备及存储介质
CN108965348A (zh) * 2018-10-12 2018-12-07 深圳前海微众银行股份有限公司 网络安全防护方法、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN111399927B (zh) 2024-06-18

Similar Documents

Publication Publication Date Title
US20190324772A1 (en) Method and device for processing smart contracts
CN110704037B (zh) 一种规则引擎实现方法及装置
CN104424002B (zh) 一种基于插件机制的动态加载组件方法和系统
CN106355049B (zh) 一种加固安卓安装包的动态链接库so文件的方法和装置
CN109933350B (zh) 在应用中嵌入代码的方法、装置及电子设备
US8984542B2 (en) Method and system for binding objects in dynamic programming languages using caching techniques
CN112631684B (zh) 可执行程序的运行方法、装置、电子设备及计算机存储介质
CN106897080B (zh) 动态链接库的处理方法及装置
CN111767056A (zh) 一种源码编译方法、可执行文件运行方法及终端设备
CN109408265B (zh) 一种ios运行异常的保护方法、装置、终端设备及存储介质
CN109643239B (zh) Java卡应用存储器占用空间优化
CN111045746A (zh) 代码扩展方法和框架
CN109032572B (zh) 一种基于字节码的java程序方法内联的方法
CN116113927A (zh) 用于函数调用中可重复使用和相对索引的寄存器资源分配的方法和装置
CN111309402B (zh) 数据监测及针对应用程序的处理方法、装置及设备
CN111399927A (zh) 应用共享Class文件的方法及装置、计算设备
US9836381B2 (en) Translating machine codes to store metadata and to propagate metadata for run time checking of programming errors
CN108460276B (zh) 一种安卓安装包的动态链接库so文件的处理方法和装置
KR20100110710A (ko) 동적 라이브러리를 갖는 인터페이스를 간단히 하는 방법, 시스템 및 컴퓨터 프로그램 제품
CN106991058B (zh) 预取文件处理方法及装置
CN114860204A (zh) 程序处理、运行方法、装置、终端、智能卡及存储介质
CN111142972B (zh) 用于扩展应用程序的功能的方法、装置、系统及介质
CN110275710B (zh) 一种Java本地接口一致性检查方法及系统、存储介质及终端
CN114237769A (zh) 一种程序的执行方法、装置、设备及存储介质
US20160364222A1 (en) Methods and systems for running modern applications in legacy software environments

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant