- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过注入(inject)值来读取系统属性
。
我正在尝试使用http://juraj.blahunka.eu/2014/05/17/inject-jboss-system-properties/以供引用。
我的代码看起来像
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD, ElementType.TYPE})
public @interface SystemProperty {
/*
Full name of System Property
*/
@Nonbinding
String value();
}
和
public class SystemPropertyProvider {
@Produces
@SystemProperty("")
String getSystemProperty(final InjectionPoint injectionPoint) {
final SystemProperty annotation = injectionPoint.getAnnotated().getAnnotation(SystemProperty.class);
final String name = annotation.value();
final String found = System.getProperty(name);
if (null == found) {
throw new RuntimeException("System property " + name + "not found");
}
System.out.println("serverPrivateKeyValue:" + found);
return found;
}
}
我注入(inject)的方式是
@Stateless
public class UniqueIdGenerator {
private static final String COLON = ":";
private String serverPrivateKey;
@SuppressWarnings("UnusedDeclaration")
public UniqueIdGenerator() {
}
@Inject
public UniqueIdGenerator(@SystemProperty("com.kb.serverPrivateKey") @Nonnull final String serverPrivateKey) {
this.serverPrivateKey = serverPrivateKey;
}
....
}
我使用 maven Cargo
部署我的 war
并将属性设置为
<container>
<containerId>wildfly8x</containerId>
<dependencies combine.children="append">
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
<systemProperties>
<com.kb.serverPrivateKey>test</com.kb.serverPrivateKey>
</systemProperties>
</container>
当我部署应用程序时,我看到错误为
[INFO] [talledLocalContainer] 11:57:49,676 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.deployment.unit."application.war".WeldStartService: org.jboss.msc.service.StartException in service jboss.deployment.unit."application.war".WeldStartService: Failed to start service
[INFO] [talledLocalContainer] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1904) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer] Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type String with qualifiers @SystemProperty
[INFO] [talledLocalContainer] at injection point [BackedAnnotatedField] @Inject @SystemProperty private com.karmabeta.services.filter.AuthTokenValidatorFilter.serverPrivateKey
[INFO] [talledLocalContainer] at com.karmabeta.services.filter.AuthTokenValidatorFilter.serverPrivateKey(AuthTokenValidatorFilter.java:0)
[INFO] [talledLocalContainer] WELD-001475: The following beans match by type, but none have matching qualifiers:
[INFO] [talledLocalContainer] - Producer Method [String] with qualifiers [@BatchProperty @Any] declared as [[UnbackedAnnotatedMethod] @Produces @BatchProperty public org.jberet.creation.BatchBeanProducer.getString(InjectionPoint)]
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:368)
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:289)
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:135)
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:166)
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:514)
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68)
[INFO] [talledLocalContainer] at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66)
[INFO] [talledLocalContainer] at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
[INFO] [talledLocalContainer] at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
[INFO] [talledLocalContainer] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_05]
[INFO] [talledLocalContainer] ... 3 more
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] 11:57:49,686 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "application.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"application.war\".WeldStartService" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"application.war\".WeldStartService: Failed to start service
[INFO] [talledLocalContainer] Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type String with qualifiers @SystemProperty
[INFO] [talledLocalContainer] at injection point [BackedAnnotatedField] @Inject @SystemProperty private com.karmabeta.services.filter.AuthTokenValidatorFilter.serverPrivateKey
[INFO] [talledLocalContainer] at com.karmabeta.services.filter.AuthTokenValidatorFilter.serverPrivateKey(AuthTokenValidatorFilter.java:0)
[INFO] [talledLocalContainer] WELD-001475: The following beans match by type, but none have matching qualifiers:
[INFO] [talledLocalContainer] - Producer Method [String] with qualifiers [@BatchProperty @Any] declared as [[UnbackedAnnotatedMethod] @Produces @BatchProperty public org.jberet.creation.BatchBeanProducer.getString(InjectionPoint)]
[INFO] [talledLocalContainer] "}}
[INFO] [talledLocalContainer] 11:57:49,723 INFO [org.jboss.as.server] (ServerService Thread Pool -- 29) JBAS018559: Deployed "cargocpc.war" (runtime-name : "cargocpc.war")
[INFO] [talledLocalContainer] 11:
我错过了什么?
最佳答案
假设您正在使用 WildFly 8.x/CDI 1.1,您的 SystemPropertyProvider
似乎会被忽略,因为它缺少 bean 定义注释。或者您是否将其放入带有合适的 beans.xml
描述符的显式 bean 存档中?
顺便说一下,为了注入(inject)系统和其他环境属性,我建议查看 Apache DeltaSpike @ConfigProperty
.
关于java - 带有限定符 @SystemProperty 的 String 类型的依赖关系不满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832663/
我的 pom.xml 中有一个属性,我想在 log4j2.xml 中使用。但是 log4j2 似乎没有检测到该属性,因此无法创建该文件。 该属性按以下方式定义: log.location
我想在 framework/base/core/Java/Android/hardware/Camera.Java 中添加一个属性 cam.sound 以便我可以用来打开或关闭相机快门声音, 但 Sy
在 camera.java 中,我需要在系统中获取属性。但是,我无法导入 android.os.SystemProperties,编译相机总是报错: packages/apps/Camera/src/
正如标题所示,下面发布了错误。我还尝试将 AppPropertyDir 放入我的环境变量中,但这只能帮助解决其他注入(inject)问题,但对这个问题没有帮助! @Configuration("app
在 camera.java 中,我需要在系统中获取属性。但是,我无法导入 android.os.SystemProperties,编译相机总是报错: packages/apps/Camera/src/
我正在阅读《Spring In Action》一书,其中有一个示例: public BlankDisc(@Value("#{systemProperties['disc.title']}" Strin
我正在尝试使用 SystemProperties.get(); 但无法导入 android.os.SystemProperties 包,谷歌搜索告诉我它是隐藏的,有什么办法解决这个问题吗? 最佳答案
我正在查看 Android Camera 代码,当我尝试导入 android.os.SystemProperties 时,找不到。 这是我正在查看的文件: https://android.google
所以我试图让这个应用程序从反射中调用 android.os.SystemProperties 但它有点痛苦,所以如果有人能提供帮助,我们将不胜感激。 所以这是让我失望的代码部分: St
我正在尝试通过注入(inject)值来读取系统属性。 我正在尝试使用http://juraj.blahunka.eu/2014/05/17/inject-jboss-system-properties
众所周知,我们可以使用 android.os.SystemProperties.set(String, String)和 android.os.SystemProperties.get(String,
我有以下代码将消息属性反序列化到我自己的类中,但如何将默认消息属性获取到同一个类中? var data = Encoding.UTF8.GetString(message.Body); var t
我一直在尝试(我希望如此)直接在钛项目中(使用 SDK 7.0.1.GA 和 hyperloop 3)的简单 Android hyperloop 代码。 var sysProp = require('
我正在尝试读取登录我的应用程序所需的用户名和密码并将其分配给系统属性。我可以使用 System.console().readLine 读取值但我无法将其分配给系统属性。属性值始终为空,我知道它为空,就
要使 SystemProperties.set 正常工作,需要哪些 linux 权限? (安卓) 我正在编写一个在 Android 设备上的系统/应用程序中运行的应用程序。 它正在运行 android
这是我的 pom.xml 文件: 4.0.0 com.test test 1.0-SNAPSHOT my_proj
在构建我的应用程序时,我遇到了一个奇怪的异常。 以下是我在主应用程序文件夹(不在 app 文件夹)中的项目特定 build.gradle 文件。 // Top-level build file whe
我在 maven 中使用一个使用 Jetty 的插件。 在这个插件中,我需要进行配置来设置maxFormContentSize: com.organization.example m
我的 appContext.xml 中有这个 file:pathTo/service.properties file:pa
这个问题已经有答案了: Where is android.os.SystemProperties? (8 个回答) 已关闭 7 年前。 我开发 Android 应用程序来显示一些基本信息。 查看来源,
我是一名优秀的程序员,十分优秀!