我正在尝试构建一个java库(streaming client.jar
),并在客户端微服务中使用它。
在这个jar文件中,我有一个POJO类,它扩展了第三方POJO类
@ConditionalOnClass({Options.class})
@ConfigurationProperties(prefix = "nats.spring")
public class ServerProps extends NatsProperties {
public ServerProps(){ super(); }
}
现在这个< code>NatsProperties类来自第三方库,这个类扩展了另一个自动配置类。
当我在这个库中本地使用ServerProps
时,我可以从NatsProperties
super类访问方法。
但是当我将这个库导出为jar文件时。并在客户端应用程序中使用它。
< code>NatsProperties方法不能通过< code>ServerProps类使用
在客户端
ServerProps props = new ServerProps();
props.server("sdfsfsdfsdf")//server method cant be resolved,
编辑
我尝试将NatsProperties
类中的所有方法添加到我的自定义ClassStreamingServerProperties
然后当我尝试在其他项目中访问它们时,如下所示
StreamingServerProperties props = new StreamingServerProperties();
props.server("serverUrl") //Intellij complains that Cannot access io.nats.spring.boot.autoconfigure.NatsProperties
建筑streaming-client.jar的梯度
plugins {
id 'java-library'
id 'maven-publish'
id "com.github.johnrengelman.shadow" version "7.1.2"
}
group = 'com.dexter'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
versionMapping {
usage('java-api') {
fromResolutionOf('runtimeClasspath')
}
usage('java-runtime') {
fromResolutionResult()
}
}
}
}
}
tasks.named('compileJava') {
inputs.files(tasks.named('processResources'))
}
dependencies {
implementation 'io.nats:nats-spring:0.5.6'
testImplementation 'org.junit.vintage:junit-vintage-engine:5.9.0'
testImplementation 'org.springframework.boot:spring-boot-starter-test:2.6.3'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
testImplementation 'org.junit.platform:junit-platform-engine:1.9.0'
testImplementation 'org.junit.platform:junit-platform-launcher:1.8.2'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
implementation('np.com.madanpokharel.embed:nats-embedded:2.1.0')
}
tasks.named('test') {
useJUnitPlatform()
}
我正在使用<代码>。/gradlew build任务生成一个jar,使用这个jar,我无法获取< code>NatsProperties类方法。
但是,如果我从这个影子
插件中使用fatJar
任务,我能够获得这些方法,但问题是它创建了所有库并且大小太大了。
我能够通过将依赖项添加为api
来解决它。
而不是
implementation 'io.nats:nats-sprin:0.5.6' // this adds to runtimeclass path
我试过了
api 'io.nats:nats-sprin:0.5.6' //this adds to both compile and runtime
因为我正在使用java-Library
gradle插件。
你能添加这个依赖项,以便intellij在target
中为你生成配置元数据吗?
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
验证码生成 缓存支持
问题内容: 我正在学习Java,并且希望将自己的课堂变成可观察的课堂。 但是我已经有了它扩展了另一个类。 我该怎么办? 问题答案: 我建议避免完全使用该类,而应 定义事件特定的侦听器和相应的事件定义 。然后在您的类中定义一个侦听器列表,以及添加和删除侦听器以及向其传播事件的方法(请参见下文)。 强制您使用它来表示事件,然后使用来检查事件类型,这是一种丑陋的非OO方法,并使代码更难以理解。如果查看j
我在使用上找到的wenzhixin引导表的可编辑扩展时遇到一些问题https://github.com/wenzhixin/bootstrap-table/tree/master/src/extensions/editable.我刚刚决定使用此扩展,因为我在项目中已经将引导表用于其他目的。使用此可编辑扩展时,我在Chrome上遇到以下控制台错误: 我无法理解可能是什么问题。我试着在网站上查看文档和
问题内容: 为什么上面的代码片段是错误的? 问题答案: 我将尝试结合其他答案中的想法来提出一个答案。 首先,让我们看一下代码中正在发生的事情。 看一下代码 本类有一个包私有方法: 在该子类的类的类,并且所述方法是被覆盖的,但具有访问修饰符。 问题 Java语言不允许子类降低子类中方法,字段或类的可见性,因此,降低该方法可见性的类是不合法的。 为什么降低可见度是一个问题? 考虑我们要使用该类的情况:
本文向大家介绍MFC扩展DLL中导出类和对话框的实现方法,包括了MFC扩展DLL中导出类和对话框的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了MFC扩展DLL中导出类和对话框的实现方法,分享给大家供大家参考。具体实现方法如下: 一般来说,如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就
问题内容: 创建数组时,无法更改其大小;它是固定的。好的,看起来不错,我们可以创建一个新的更大的数组并逐个复制值,这有点慢。它的技术背景是什么? 问题答案: 这个问题没有提到语言,因此我将选择基于“ C”的数组作为答案。 数组被分配为单个内存块。增长数组是有问题的,因为正确执行此操作的唯一方法是在最后增长它。为了增加大小N,在数组的末尾必须在下一个分配的地址之前至少有N个空闲字节。 要支持这种类型