问题标签 [reflections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2485 浏览

java - 仅当由 Maven 执行时,使用 Reflections google 库的单元测试才会失败

我正在使用 Google Reflections 库来查询类路径中的某些资源。这些资源与我项目中的类位于同一位置。

我编写了一些在 Eclipse 中作为单元测试执行时成功的单元测试,但是当我尝试使用 Maven(maven install例如)执行它们时,它们没有按预期工作。经过一番调试,显然问题是用Maven执行时,Reflections库找不到资源所在的classpath url。

我得出了这个结论,研究反射如何确定应该检查的类路径 URL。例如,以下方法显示了 Reflections 如何在给定类加载器的情况下找到可用的类路径 URL(原始的 Reflections 方法已被简化了一点):

简而言之,它正在遍历类加载器层次结构,询问每个单独的类加载器的 URL。

在 Eclipse 中,我从单元测试中调用以前的方法,如下所示:

正如预期的那样,我可以看到(在许多其他 URL 中)配置为我的项目的一部分的类路径 URL:

和 Reflections 是一种魅力(Reflections 应该找到的资源位于file:<MY_PROJECT_PATH>/target/classes/)。

但是,当测试由 Maven 执行时,我意识到这些 URL 条目从该forClassLoader方法返回的集合中丢失,并且其余的 Reflections 方法对于这个问题没有按预期工作。

“令人惊讶”的事情是,如果我在 maven 执行单元测试时写这个:

我可以看到类加载器仍然可以解析我要查找的资源。我很困惑为什么当使用 Maven 执行该forClassLoader方法时,返回的集合中不包含我项目的类路径 URL,尽管同时它能够解析位于此类 url(!)中的资源。

这种行为的原因是什么?当作为 Maven 运行的单元测试的一部分调用时,我可以尝试使 Reflections 库工作的任何解决方法吗?

0 投票
2 回答
1385 浏览

java - jarInputStream.getManifest() 为空

当我将 jar 文件上传到 servlet 并尝试读取其清单时。jarStream.getManifest() 返回 null..

JarInputStream jarInputStream = new JarInputStream(inputStream);

清单 mf = jarInputStream.getManifest();

虽然当我阅读为 JarFile 提供绝对路径时同一个 jar,但我得到了 jar 的清单。

我需要在运行时读取 jar 文件的清单 .. 上传时..

任何建议都非常感谢..

0 投票
2 回答
536 浏览

java - 从通过 servlet 动态上传的 jar 加载类

我正在通过 servlet 动态上传一个 jar 并将其保存在我的 WEB-INF/lib 目录中。我想用我的@annotation 注释所有类,

已经使用下面的反射代码没有任何运气.. jar 的清单是可读的,但类不是.. 类的列表是 0

对配置的哪些更改将有助于从动态上传的 jar 中获取类。

0 投票
1 回答
71 浏览

import - 在 Intelij IDEA 中无法识别 Jar 库

你好!我是 intelij IDEA 的新手,我无法让谷歌反射库在 intelijIDEA 中工作。我已经尝试在许多站点中将其添加为推荐器,方法是转到模块配置,然后是依赖项,单击添加库图标并提供 jar 文件。它在编辑器中被识别(没有用红色下划线),但是当我尝试运行问题时它会抛出一个java.lang.NoClassDefFoundError: com/google/common/base/Predicate 所以我猜测导入不起作用。提前感谢您的帮助。

0 投票
2 回答
10488 浏览

java - 使用 Google Reflections 获取所有类的列表——但 java.* 似乎丢失了

我正在使用 google Reflections 包来构建可用于调用的所有类的索引。以下代码应该返回 JVM 中加载的所有类:

我注意到它返回的集合不包含 java.* 域中的任何内容。熟悉 Reflections 包的人可以告诉我如何获得这些吗?谢谢!

0 投票
4 回答
1599 浏览

java - 反射返回带有空元素的 Set

我正在使用反射来查找具有特定注释的类。我的项目结构如下

一个 WAR 包:WEB-INF/classes/...packages.../ClassAnnoted1.class

战争中包含的一个 JAR 包,它有一个执行此代码的类:

CustomAnnotation 也存在于 JAR 包中。

设置大小是正确的(即,如果我的 WAR jar 中有 3 个带有注释的类,则设置大小返回为 3),但其中的所有元素都是 null 而不是 Class。我需要获取类并检查 JAR 类中的注释参数。

有人知道为什么会这样吗?

编辑:

也不起作用,在这种情况下,设置长度为零,而不是带有注释的类数。

编辑 2:好的,真正的问题是我将整个应用程序打包为 EAR,所以我有以下内容:

jar 包含在 EAR lib 文件夹中,而不是 WAR lib 文件夹中。所以jar类看不到war类,一旦我让WAR直接依赖于JAR,就像这样:

它开始工作了。但是最初的问题仍然存在,可能存在我希望将 Jar 类包含在 EAR 而不是 WAR 中的情况(例如,如果我有多个需要使用我的 jar 的战争)。

0 投票
3 回答
20483 浏览

java - 反射无法获取类类型

我正在使用名为Reflections的第三方库(不要与 Java反射混淆)来搜索另一个 jar 以查找Foo 使用以下代码扩展的类:

当我这样做时,反射会引发以下错误:

有谁知道如何解决这个问题,因为我很难过?

提前致谢!

0 投票
1 回答
641 浏览

java - 在 jar 文件中列出一个包中的所有接口

你好stackoverflow'ers!我正在尝试列出特定包中接口中的所有类。我遇到了多种解决方案并尝试了以下方法:

使用反射:

使用 extcos:

在 NetBeans (7.3) 中调试时,这两种解决方案都成功列出了我的所有类,但是当我编译 jar 并执行它时,commandClasses 集合似乎保持为空。我不习惯 java,但我想它必须对类路径做一些事情,并且调试时间从 \target\classes 文件夹而不是 jar 中获取类。

有人可以帮助我解决允许我在 .jar 中列出类的解决方案吗?this.getClass().getPackage().getName() 是否可能只需要更改为指向 jar 的内容?

0 投票
3 回答
1071 浏览

playframework-2.0 - Play2War - 无法从 url 创建 Vfs.Dir

我正在尝试使用 Play2War 将 Play 2.1.1 应用程序部署到 Websphere 8.5.5。该应用程序在启动时运行良好,play ~run但是当我将战争部署到 Websphere 时,我收到以下错误消息:

其他人看到这个问题吗?

0 投票
1 回答
1402 浏览

java - 使用 Google 反射库检索项目中所有包的列表?

我说的是反射库。是否有可能获得我让代码编译的项目中包含的所有包的列表?

我已经尝试使用以下代码括号,但我不想插入项目名称。