找不到id为`kotlin`的插件

我正在使用gradle并且正在尝试将kotlin添加到我的项目中。 但是,当我试图添加kotlin插件gradle它无法找到它。 apply plugin: 'groovy' apply plugin: 'kotlin' buidscript { ext.kotlin_version = '1.0.1-2' repositories { jcenter() mavenCentral() } dependencies { classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.1-2' } } repositories { jcenter() } dependencies { compile 'org.codehaus.groovy:groovy-all:2.4.6' compile 'org.antlr:antlr4:4.5.3' testCompile 'org.spockframework:spock-core:1.0-groovy-2.4' testCompile 'junit:junit:4.12' compile 'org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version' } 我得到这个错误 Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'kotlin' not found. 问题是什么?

Java是否支持Swift类的扩展?

在Swift中,您可以创建现有类的扩展,以便在需要时将其他函数添加到现有类中。 这也有助于避免创建现有类的子类。 我只是想知道在Java中是否存在类似的函数? 或者是将其他方法添加到现有java类的唯一方法是创建现有类的子类? 提前感谢任何帮助!

自己的SDK架构 – Kotlin中的异步方法API

我们正在为我们的产品构建一个公共的SDK。 它是用Kotlin和内部我们使用协程。 但是,我们想要发布一个可用于JAVA的API,这就是为什么不能提供挂起的功能作为公共API。 如果Java中的可用性不如Kotlin那么舒服,那么我们也可以。 所以,例如,我们正在寻找下面的异步方法的返回类型: class Sdk { fun getPlace(): ___ } 我们考虑过的事情: 使用RX Java作为接口。 我们不喜欢这个解决方案,Rx非常复杂,我们希望尽可能少地添加其他的依赖关系。 一般来说,我们会去返回单。 但是,Rx java我们不想解决的问题(哪个线程应该是已完成的工作),而Rx并不解决我们想要解决的问题(如果可能的话),例如生命周期和观察者 – Android架构组件中解决的问题。 Java 8的未来。 这似乎是最合适的,但不可能,因为我们需要针对较旧的Android(至少4.1)。 Android架构LiveData。 返回一个LiveData似乎没问题,还有一个observeForever()方法,使它可以在后台线程中使用。 另一方面,api表明它可能会重复返回多个结果。 但是,我们只希望在结果或者一个例外上忽略。 但是,在Kotlin中,我们可以实现扩展函数,这将使得它可以像sdk.getPlace().await() 。 自定义解决方案:返回一个简单的Result对象,通过提供一个回调sdk.getPlace().observe(Observe { onSucccess(data: Place) {} onFailure(e: Throwable) {} }) 我们将提供一个等待的扩展功能。 问题: 我们错过了一些重要的方面/图书馆/可能性吗? 我们应该选择哪种解决方案,为什么

Android Studio 3.0 Canary 2:未找到属性“android:versionCode”

我已经更新了Android Studio到最新的金丝雀版本,现在我无法运行我的应用程序。 每当我尝试构建项目时,都会收到以下错误消息: Error:F:\…\**app_name**\app\build\intermediates\instant-run-support\debug\slice_0\AndroidManifest.xml:2 attribute 'android:versionCode' not found 我试图手动打开文件,属性显然存在: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="****" android:versionCode="1" android:versionName="1.0" split="lib_slice_0_apk"> </manifest> 我试图清理项目,使缓存无效,重新启动android studio,但没有任何帮助。 这是我的build.gradle (app)文件: apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { compileSdkVersion 25 buildToolsVersion "25.0.3" defaultConfig { applicationId "****" minSdkVersion 16 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled […]

在Java中设置BufferedImage alpha掩码

我有两个从pngs加载的BufferedImages。 第一个包含一个图像,第二个是图像的alpha蒙版。 我想通过应用alpha蒙版来创建两者的组合图像。 我的google-fu失败了 我知道如何加载/保存图像,我只需要从两个BufferedImage到一个具有正确Alpha通道的BufferedImage的位置。

在Kotlin中可串行化

在我的Android应用程序中,我有一个TreeMap ,我可以愉快地把它放入一个Bundle bundle.putSerializable("myHappyKey", myHappyTreeMap); 但现在,我正在将我的应用程序移植到Kotlin,Android Studio抱怨Serializable! 是必需的,但它是找到一个Map 。 我如何处理这个? 编辑警告似乎消失,如果我把我的地图映射到一个Serializable 。 这是这样吗? 编辑2我宣布和初始化myHappyTreeMap为 var myHappyTreeMap: Map<Int, Double> = mapOf() 该文件说,使用mapOf()初始化的mapOf()是可序列化的。 如果文档说的这样…

'com.android.tools.build:gradle:3.0.0-alpha3'和'com.android.tools.build:gradle:3.0.0-alpha1'有什么区别?

我正在尝试更新最新的gradle android插件。 我最初尝试了“3.0.0-alpha1”,现在我正在使用“3.0.0-alpha3”。 用'3.0.0-alpha1'版本,我得到一个错误“未找到”,之后,我切换到“3.0.0-alpha3”,与我得到下面的错误。 错误: – 不再支持“getMainOutputFile”。 如果您需要确定输出的文件名,请使用getOutputFileName。 我也修正了这个错误。 但是,我只是想“3.0.0-alpha1”和“3.0.0-alpha3”之间的区别是什么,在此先感谢。

在Kotlin中处理可空或空列表的习惯方式

假设我有一个List<Any>?类型的变量activities List<Any>? 。 如果列表不为空而不是空的,我想做一些事情,否则我想做别的事情。 我想出了以下解决方案: when { activities != null && !activities.empty -> doSomething else -> doSomethingElse } Kotlin有没有更习惯的方式来做到这一点?

在RecycleView适配器中实现多个ViewHolder类型

这可能是一个讨论不是一个问题。 正常的方式来实现多种类型 如你所知,如果我们想要在RecyclerView实现多种类型,我们应该提供多个CustomViewHolder扩展RecyclerView.ViewHolder 。 例如, class TextViewHolder extends RecyclerView.ViewHolder{ TextView textView; } class ImageViewHolder extends RecyclerView.ViewHolder{ ImageView imageView; } 然后我们必须重写getItemViewType 。并在onCreateViewHolder中构造TextViewHolder或ImageViewHolder 。 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == 0) { return new ImageViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false)); } else { return new TextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false)); } } 上面的代码是正常的,但有另一种方式。 其他方式 我认为只有一个CustomViewHolder就足够了。 class MultipleViewHolder […]

JPA为卡桑德拉?

思考开始在一个新的基于Java的项目中使用Cassandra,我发现这篇文章开始卡桑德拉 – 使用昆德拉? 别的东西? 其中说“假装卡桑德拉是一个关系数据库,昆德拉的做法是一个很好的方法,把你自己画到一个角落,而不是很了解你到达那里。” 我知道数据建模应该遵循不同的规则,但是假设我遵循这些规则,如果我用JPA层包装了Cassandra(如Kundera,DataNucleus或其他),还有什么可以丢失的呢?