我正在构建一个具有许多不同程序包的Java应用程序。我希望能够以编程方式告诉应用程序中存在哪些以特定前缀开头的软件包。无论如何,Java反射API可以做到这一点吗?我没有看到任何与反射API相关的信息。
例:
com.app.controls.text
com.app.controls.picker
com.app.controls.date
etc
我想通过知道前缀“ com.app.controls”来枚举所有这些信息,并了解将来可能会集成一个新程序包。
谢谢!
您可以使用Package.getPackages()来执行此操作,该方法返回当前类加载器已知的所有软件包的数组。您必须手动遍历数组,并使用getName()查找具有适当前缀的数组。
这是一个简单的例子:
public List<String> findPackageNamesStartingWith(String prefix) {
return Package.getPackages().stream()
.map(Package::getName)
.filter(n -> n.startsWith(prefix))
.collect(toList());
}
请注意,此技术将仅返回在当前类加载器中定义的包。如果您需要来自其他类加载器的软件包,则有一些选择:
进行安排,以便您的程序可以从该类加载器内部运行以上代码。这要求您的代码库有一定的组织,这可能可行,也可能不可行。
使用反射在适当的类加载器上调用(通常受保护的)方法getPackages()。如果程序在安全管理器下运行,则此方法将无效。
问题内容: 如何通过goinstall列出所有已安装的软件包?我需要将所有安装在一台计算机上的软件包重新安装到另一台计算机上。 问题答案: $ GOROOT / goinstall.log下有一个列表。如果要将所有软件包安装在另一台计算机上,只需复制文件并运行, goinstall将读取该文件并安装其中列出的所有软件包。
问题内容: 我已经获得运行指示,该指示似乎可以成功运行,但是我不清楚该软件包的安装位置,因此可以从中运行可执行文件。 每个https://golang.org/doc/code.html#remote似乎它都将安装在我的shell 中,但未在其中定义(尽管该命令似乎可以正常工作)。Go是通过Homebrew安装的。 问题答案: 我通过运行找到了缺少的线索: 由此,我在上找到了相关的可执行文件。
Tazpkg - 软件包管理器 Slitaz提供一个小型软件包管理器,它能轻易在系统里安装许多软件。Tazpkg是一个由SHell脚本写的轻量级的软件包管理器,能安 装.tazpkg文件。它能在Busybox、ash shell和bash中正常运行。Tazpkg可以让你列出软件包列表、安装软件包、删除软件包、下载软件包、解压软件包、打包软件包、查找软件包或者取 得有关可用软件包或所有已安装软件包的
问题内容: 当我运行应用程序时,每次我在logcat中收到以下异常: 注意:当我从仿真器中卸载应用程序并运行它时,我没有收到此异常,但是当我在仿真器中重新运行已安装的应用程序时,却收到了此异常。请帮忙。 问题答案: 当dalvik重新安装.apk文件并尝试重用或回收来自同一软件包的先前打开的活动/视图时(如果您尚未关闭先前安装的应用程序),这是底层框架引起的详细错误消息。而且,它与您的应用程序无关
问题内容: 我正在尝试检索目录中的所有图像,包括所有子目录。我目前正在使用 这可行,但是结果是: 我希望它一次执行整个目录分支,因此结果是: 非常感谢您的帮助,欢呼! 附注:如果我只需将所有子目录都包含在投资组合下,而不必用通配符具体说明每个目录,那也很好。 问题答案: 从示例
主要内容:Linux源码包,Linux二进制包,源码包 VS RPM二进制包,如何选择Linux下的软件包众多,且几乎都是经 GPL 授权、免费开源(无偿公开源代码)的。这意味着如果你具备修改软件源代码的能力,只要你愿意,可以随意修改。 GPL,全称 General Public License,中文名称“通用性公开许可证”,简单理解 GPL 就是一个保护软件自由的一个协议,经 GPL 协议授权的软件必须开源,请猛击《开源协议》了解更多信息。 Linux下的软件包可细分为两种,分别