我正在编写一个jetpack compose android应用程序,我需要永久存储一些设置。
我决定使用androidx.datastore:datastore-preferences:1.0.0库,我已将其添加到我的类路径中。
根据https://developer.android.com/topic/libraries/architecture/datastore描述,我已将这行代码添加到顶层的 kotlin 文件中:
val Context.prefsDataStore:按preferencesDataStore(name =“settings”)的数据存储
但我得到一个编译错误:
e: ...SettingsViewModel.kt: (13, 50): Property delegate must have a 'getValue(Context, KProperty<*>)' method. None of the following functions is suitable:
public abstract operator fun getValue(thisRef: Context, property: KProperty<*>): DataStore<Preferences> defined in kotlin.properties.ReadOnlyProperty
Run Code Online (Sandbox Code Playgroud)
如何使用数据存储首选项?
我的 build.gradle 文件:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
}
apply plugin: 'dagger.hilt.android.plugin'
apply plugin: 'kotlinx-serialization'
android {
compileSdk 31
defaultConfig {
applicationId "hu.homedashboard.mobile"
minSdk 22
targetSdk 31
versionCode 1
versionName …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-datastore
如何将 TemporalAccessor 转换为 java.util.Date?
TemporalAccessor accessor = functionReturnsTemporalAccessor()
Date date = Date.from(accessor)
Run Code Online (Sandbox Code Playgroud)
Date.from()不接受TemporalAccessor,有什么方法可以转换为java.util.Date吗?
我使用 docker swarm 1.13.1,当我初始化 docker swarm 或加入 docker swarm 时,它有时会在“172.19.0.0/16”子网中创建一个 docker_gwbridge 网络。
但是我的计算机子网在相同的范围内,所以当它初始化这个网络时,docker swarm 主机变得无法从我的计算机访问。
所以我的问题是:如何更改现有 docker 网络的子网。
> docker network ls
NETWORK ID NAME DRIVER SCOPE
ac1100164960 bridge bridge local
3838ae360f35 docker_gwbridge bridge local
f9a77266aa15 host host local
rgqnm19zbasv ingress overlay swarm
04c1c6b3ade7 none null local
Run Code Online (Sandbox Code Playgroud)
检查网络:
> docker network inspect 3838ae360f35
[
{
"Name": "docker_gwbridge",
"Id": "3838ae360f3585f2cda8a43a939643cdd74c0db9bfb7f4f18b3b80ae07b3b9db",
"Created": "2017-03-22T13:26:50.352865644+01:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1" …Run Code Online (Sandbox Code Playgroud) 我有一个由 Jenkinsfile 定义的构建作业,我想运行 warningsPublisher Jenkis 插件来显示 gradle 构建警告的输出(包括容易出错的输出)。
有警告发布者插件 DSL 的文档吗?如何将 gradle 构建输出警告添加到此插件?
node {
stage('Build/Test artifacts') {
sh "./gradlew clean build"
}
stage('Code quality') {
step([$class: 'WarningsPublisher', canComputeNew: false, canResolveRelativePaths: false, defaultEncoding: '', excludePattern: '', healthy: '', includePattern: '', messagesPattern: '', parserConfigurations: [[parserName: 'Java Compiler', pattern: '???.txt']], unHealthy: ''])
}
}
Run Code Online (Sandbox Code Playgroud) javac compiler-warnings gradle jenkins-plugins jenkins-pipeline
我想通过以下方式在typescript中创建一个延迟的observable:
import 'rxjs/add/observable/of';
...
const o = Observable.of(values).delay(10000);
o.subscribe((v) => { alert(v); });
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
"Observable_1.Observable.of(...).delay is not a function"
Run Code Online (Sandbox Code Playgroud) 我在代理后面工作,因此我在 nexus 中使用本地 npm 注册表。我有一个 .npmrc 配置,其中包含 jenkins 中的注册表设置:
/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs-default/bin/node "/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs-default/bin/npm" config get registry
https://nexus/repository/npm-all/
Run Code Online (Sandbox Code Playgroud)
当我想运行 npm install 时,出现以下错误:
/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs-default/bin/node "/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/nodejs-default/bin/npm" "install"
npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t git://github.com/ariya/esprima.git
npm ERR!
npm ERR! fatal: unable to connect to github.com:
npm ERR! github.com[0: 192.30.253.113]: errno=Connection refused
npm ERR! github.com[1: 192.30.253.112]: errno=Connection refused
npm ERR!
npm ERR!
npm ERR! exited with error code: 128
npm ERR! A complete log of this run can be found in:
npm …Run Code Online (Sandbox Code Playgroud) 我想将 spring security 与 spring boot webflux 结合使用,但启动应用程序时出现以下错误:
org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'requestMappingHandlerAdapter' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$EnableWebMvcConfiguration; factoryMethodName=requestMappingHandlerAdapter; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]] for bean 'requestMappingHandlerAdapter': There is already [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.web.reactive.config.DelegatingWebFluxConfiguration; factoryMethodName=requestMappingHandlerAdapter; initMethodName=null; destroyMethodName=(inferred); defined in org.springframework.web.reactive.config.DelegatingWebFluxConfiguration] bound.
at org.springframework.beans.factory.support.DefaultListableBeanFactory.registerBeanDefinition(DefaultListableBeanFactory.java:897) ~[spring-beans-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod(ConfigurationClassBeanDefinitionReader.java:274) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE]
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:141) ~[spring-context-5.1.5.RELEASE.jar:5.1.5.RELEASE] …Run Code Online (Sandbox Code Playgroud) 我想使用以下代码反序列化一个json以使用objectmapper映射:
fun onMessage(topic: String, message: MqttMessage) {
val typeRef = object : TypeReference<HashMap<String, String>>() {}
val msg = objectMapper.readValue(message.payload, typeRef)
...
}
Run Code Online (Sandbox Code Playgroud)
编译器表示不会推断参数T in fun <T : Any!> readValue (src: ByteArray!, valueTypeRef: (TypeReference<Any!>..TypeReference<*>?)): T!
如果用我的自定义类扩展HashMap,是否有解决此问题的方法:
class MyHashMap : HashMap<String, String>()
Run Code Online (Sandbox Code Playgroud)
...
fun onMessage(topic: String, message: MqttMessage) {
val msg = objectMapper.readValue(message.payload, MyHashMap::class.java)
...
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个 Android 应用程序,并从 Gallery 添加了“导航抽屉活动”,我删除并重命名了菜单项。当我单击抽屉活动中的任何菜单项时启动应用程序后,我收到以下错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'androidx.navigation.NavGraph androidx.navigation.NavDestination.getParent()' on a null object reference
at androidx.navigation.ui.NavigationUI.onNavDestinationSelected(NavigationUI.java:78)
at androidx.navigation.ui.NavigationUI$3.onNavigationItemSelected(NavigationUI.java:453)
at com.google.android.material.navigation.NavigationView$1.onMenuItemSelected(NavigationView.java:215)
at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:834)
at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:985)
at com.google.android.material.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:416)
at android.view.View.performClick(View.java:7448)
at android.view.View.performClickInternal(View.java:7425)
at android.view.View.access$3600(View.java:810)
at android.view.View$PerformClick.run(View.java:28305)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Run Code Online (Sandbox Code Playgroud)
主要活动代码:
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
private lateinit var appBarConfiguration: AppBarConfiguration
private lateinit var navView: NavigationView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
initView()
} …Run Code Online (Sandbox Code Playgroud) 我从sonarqube得到了以下错误
可能会抛出"NullPointerException"; "getFolderPath()"可以返回null.
对于以下行:
if (upstreamContent.getFolderPath() != null && !upstreamContent.getFolderPath().isEmpty()) {
...
}
Run Code Online (Sandbox Code Playgroud)
其中upstreamContent可能不为null.
如何在不关闭规则的情况下在sonarqube中修复它?
更新:
有人让我展示UpstreamContent的来源
public class UpstreamContent {
@Nullable
private String folderPath;
...
@CheckForNull
@Nullable
public String getFolderPath() {
return folderPath;
}
public void setFolderPath(String folderPath) {
this.folderPath = folderPath;
}
}
Run Code Online (Sandbox Code Playgroud) kotlin ×3
android ×2
java ×2
androidx ×1
angular-cli ×1
date ×1
docker ×1
docker-swarm ×1
gradle ×1
jackson ×1
javac ×1
jenkins ×1
networking ×1
npm ×1
rxjs5 ×1
sonarqube ×1
spring ×1
spring-boot ×1
temporal ×1
typescript ×1