与Gradle一起使用Kotlin

我是Kotlin和Gradle新手,并试图按照这些步骤,所以我得到了以下两个文件: 运行gradle init我将build.gradle改为: // set up the kotlin-gradle plugin buildscript { ext.kotlin_version = ‘1.1.2-2’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } // apply the kotlin-gradle plugin apply plugin: “kotlin” apply plugin: ‘application’ mainClassName = “hello.main” // add kotlin-stdlib dependencies. repositories { mavenCentral() } dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version” } Hello.kt : package hello […]

Android室错误:types转换器无法识别列表的枚举

房间库不识别我为枚举List创建的TypeConverter 。 但是,当我将其更改为枚举的ArrayList它工作正常。 任何人有任何想法,为什么和我能做些什么来使这个工作与List ? (在Kotlin中使用列表更容易,我真的不希望只是因为这个原因转换回ArrayList )。 这是我的代码: 我的模特: @Entity data class Example(@PrimaryKey val id: String?, val name: String, var days: List?) DayOfWeek是一个枚举: enum class DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; val value: Int get() = ordinal + 1 companion object { private val ENUMS = DayOfWeek.values() fun of(dayOfWeek: Int): DayOfWeek { […]

错误:执行任务’:app:clean’失败。 无法删除文件

我试图重建我的Android Studio Gradle项目(主要包含Kotlin代码),但在清理/重建过程中,它开始抛出UnableToDeleteFileException : Execution failed for task ‘:app:clean’. > Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar 我试图改变我的项目的包结构后,开始发生。 不幸的是,我通过重命名和移动源文件夹,而不是通过Android Studio重构,这是一个坏主意。 我一直在寻找这个问题的解决办法,而这些都是我试图无效的东西: 做一个Gradle同步; 重新安装Java JRE和Java SDK; 重新安装最新版本的Android Studio(1.4); 回滚到以前的AS版本(1.3); 使AS缓存无效并重新启动; 删除项目目录中的gradle和.gradle目录; 删除我的用户目录中的.gradle目录; 从AS终端运行gradlew clean ; 手动将源代码复制到一个新项目(奇怪的是,它在某些项目中持续存在) 我已经尝试了一些成功的事情,但只能让我再次执行一次干净的重建,然后再次发生错误: 关闭AS,手动删除构建文件并再次打开它; 当AS正在运行时,会杀死java.exe进程(这在技术上可以每次都完成,但是这很枯燥,并且会降低构建过程的速度) 所以看起来,编译Java进程可能会因为某种原因而对构建文件进行锁定,但这也可能与Kotlin有关。 我有一个(更成熟的)我正在处理的Java Android项目,虽然我不能在清理时重现此错误。 这似乎只发生在我的Kotlin项目上。 有任何想法吗? 提前致谢。 更新: 我发现问题是由Kotlin Android插件引起的。 当我从模块的build.gradle文件中删除apply plugin: ‘kotlin-android’时,问题就消失了,当我重新插入时,它会回来。 随时提供任何洞察到这一点。 更新2: 最后的更新不是原因。 我发现如果一个项目包含一个Kotlin文件,那么重建和清理失败。 即使所有Kotlin文件都被删除,它仍然会失败,直到后台Java进程被终止,这意味着它在构建文件上有某种锁定。 我在这里提交了一个bug,更多的细节和步骤来重现错误: KT-9440

在android studio中使用main函数运行单个kotlin类

我正在尝试熟悉Kotlin在我的android应用程序中使用。 所以首先我想尝试一些简单的kotlin示例,只是为了熟悉kotlin的语法。 我只用main方法在我的android项目中创建了一个名为Main.kt的类。 fun main(args: Array) { println(“Hello World”); } Android工作室向我展示了主方法左侧的一个kotlin图标,当我点击这个图标时,它会显示下面三个选项: 1)运行Mainkt 2)调试Mainkt 3)运行与覆盖面的Mainkt 我选择了第一个,但它抛出了我 Exception in thread “main” java.lang.ClassNotFoundException: com.vikalp.kotlin.MainKt at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:107) 我陷入了这样一个小问题。 让我知道你们中的任何一个人是否面临这样的问题和解决方案。

在从文件中读取数据行之前,枚举有多复杂(例如.csv)?

我已经创建了一个平台游戏的一部分,我有一个演员类,表示对象和角色的实例,以及一个types枚举,它表示每个演员将有什么数据(如速度,攻击,防御等)。 使用硬编码的枚举定义来指定每种types的所有数据似乎有点繁琐。 例如 PLANE(“Plane”, 10, 10, 2, 0), MISSILE(“Missile”, 1, 0, 0, 4); 最好是指定一个文件中的数据,然后读取它?

如何将Drawable转换为位图?

我想设置一个特定的Drawable作为设备的壁纸,但所有壁纸function只接受Bitmap s。 我无法使用WallpaperManager因为我在2.1之前。 此外,我的绘图从网上下载,不居住在R.drawable 。

如何在Spring Boot应用程序中记录活动配置?

我真的很喜欢使用YAML配置为Spring Boot,因为我发现它非常可读和有用,有一个文件显示哪些属性是在我的不同的配置文件中活动。 不幸的是,我发现application.yml中的设置属性可能相当脆弱。 像使用tab而不是空格的东西会导致属性不存在(就我所知,没有警告),而且我经常发现我的活动配置文件没有被设置,因为我的YAML有一些未知的问题。 所以我想知道是否有任何钩子可以让我获得当前活动的配置文件和属性,以便我可以记录它们。 同样,如果application.yml包含错误,有没有办法导致启动失败? 要么是我自己validationYAML的手段,这样我就可以杀死启动过程。

获取权限拒绝例外

我在我的应用程序中有一个活动,允许用户从设备中逐一选择几个文件,我正在使用这样的意图: Intent intent = new Intent(); intent.setType(“*/*”); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, getString(R.string.select_attachments_activity_chooser_label)), SELECT_PICTURE); 这工作得很好,我得到的Uri的文件选择,他们看起来像这样: content://com.android.providers.media.documents/document/image%3A42555 那么,如果该文件是一个图像,我解码它: InputStream streamForDecodeBitmap = MyApp.getContext().getContentResolver().openInputStream(uri); Bitmap bitmap = BitmapFactory.decodeStream(streamForDecodeBitmap, null, options); 当用户点击一个按钮时,我通过intent将Uris列表传递给另一个活动,并且在这个活动中,在一个AsyncTask中,我使用base64对文件进行编码以便通过网络发送: InputStream is = MyApp.getContext().getContentResolver().openInputStream(uri); byte[] inputData = getBytes(is); is.close(); return Base64.encodeToString(inputData, Base64.DEFAULT); 问题是,当我打开inputStream,有时它的工作,但大部分时间我得到这个exception: E/AndroidRuntime(22270): Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.media.MediaDocumentsProvider from ProcessRecord{42858fe0 22270:co.uk.manifesto.freeagentapp/u0a246} (pid=22270, uid=10246) requires android.permission.MANAGE_DOCUMENTS or […]

如何在实现Parcelable接口时读写一个布尔值?

我试图做一个ArrayList Parcelable为了传递给一个活动的自定义对象列表。 我开始写一个扩展ArrayList并实现Parcelable的myObjectList类。 MyObject某些属性是boolean但Parcel没有任何方法read/writeBoolean 。 处理这个问题的最好方法是什么?

Thymeleaf选择选项重置为默认值

在html中有一个搜索表单: 选项中的默认值是“名字”。 当我选择,让我们说,通过手机搜索,按“搜索”并得到结果页面,表单选项被重置为默认值。 但我需要它来保持我选择的变体,在这种情况下,它是“手机”。 什么必须在HTML中进行更改? 填写表格: 收到搜索结果后,“选项”应该保持“手机”: html代码: 在JSP + Spring标签的情况下,很容易解决: 但是Thymeleaf令人困惑