我有一个Java项目,我使用Maven的依赖解决方案,并建立自包含的,可运行/超级jar(目前通过maven-shade-plugin),我想开始玩混合Kotlin到一些新的项目特征。 是使用maven来创建一个由Java(主要)和Kotlin组成的可运行/超级jar包,它相对简单和/或支持? 或者我正在看一个粘合在一起的东西,如果做对了可能工作的黑客工作? Kotlin不是必需的,但是因为它应该可以和Java自由组合,所以我一直想要尝试这个项目。 真的想要测量一下是否是一堆蠕虫,或者没有什么大不了的(如果它是nbd,最好的方向去看?) 这里是我的pom.xml的构建部分,所以你可以看到我目前正在创建它 my-server src/main/resources true org.apache.maven.plugins maven-jar-plugin 3.0.0 org.apache.maven.plugins maven-shade-plugin 2.4.3 package shade *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA com.mycompany.myproject.mymainclass org.apache.maven.plugins maven-compiler-plugin 3.6.0 1.8 1.8 任何人都有经验做这样的事情? 简单? 或者只是远离?
我尝试使用kotlin编写javafx应用程序。 在将它导出到可运行jar之后,我双击jar文件,但是它不起作用。 但是,如果我使用Java,一切都可以。 例如:通过IDEA 2017.2.5创建一个新的javafx项目。选择File-Project Structure,然后点击JavaFX标签,Native bundle选择all。然后应用设置。 在这里输入图像说明 然后选择Build-Build Artifact-Build。 在这里输入图像说明 我可以运行它。一切都好。 在这里输入图像说明 但是当我使用kotlin并且做和java一样的事情时。 当我在IDEA中运行它时,一切正常。 码: package sample import javafx.application.Application import javafx.fxml.FXMLLoader import javafx.scene.Parent import javafx.scene.Scene import javafx.stage.Stage class Main : Application() { @Throws(Exception::class) override fun start(primaryStage: Stage) { val root = FXMLLoader.load(javaClass.getResource(“sample.fxml”)) primaryStage.title = “Hello World” primaryStage.scene = Scene(root, 300.0, 275.0) primaryStage.show() } companion […]
我在下面的活动中有一段简单的代码 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ValueAnimator valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); valueAnimator.setRepeatCount(ValueAnimator.INFINITE); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { } }); valueAnimator.start(); } } 如果活动终止,将会有内存泄漏(经泄漏金丝雀certificate)。 但是,当我把这个代码转换成相同的Kotlin代码(使用shift-alt-command-k)时,它如下 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val valueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f) valueAnimator.repeatCount […]
看起来就像最新的Kotlin更新一样,您不能再通过具有解构Entry地图来迭代。 例如: val map = HashMap() for ((i, s) in map) { // compiler error here … // code } 编译器错误是For-loop range must have an iterator() method 此function以前按预期工作,遍历地图中的每个条目。 我也尝试使用map.entries和map.entrySet() (不建议使用)和这些: 现在迭代地图的习惯用法是什么? 这是一个错误?
今天在我的kotlin项目中,我得到了下面的编译器错误: Error:(101, 59) Kotlin: Overload resolution ambiguity: @InlineOnly public inline fun String.toInt(): Int defined in kotlin.text @InlineOnly public inline fun String.toInt(): Int defined in kotlin.text 我的代码(简体): “3”.toInt() 我知道这与不兼容的bundeled kotlin运行时间有关: Warning:Kotlin: Library has Kotlin runtime bundled into it 但是,我不能通过排除bundeled运行时来解决它: compile (‘my.bad.dependency:with-kotlin:1.0’) { exclude group: ‘org.jetbrains.kotlin’ } 我现在的.toInt()是不使用.toInt()函数。 有没有办法告诉编译器使用最新的运行时库?
Kotlin网站链接 该网站说 “返回单元的方法的生成器式使用” fun arrayOfMinusOnes(size: Int): IntArray { return IntArray(size).apply { fill(-1) } } 由于函数“apply”返回genericstypes,我认为Unit与Java中的void是一样的,所以使用void方法作为构造器样式,这是没有意义的。
我对Android和Kotlin都是新手。 任何人都可以帮我在webView加载一个URL? 我只是想加载的url和查看应用程序打开时的网页。
我创建了一个TextView动态使用Kotlin,如果我想通过使用标签设置值为textview它显示findViewWithTag作为未解决的参考错误。 val textview = findViewWithTag(“201”) as TextView 如果我使用findViewById它显示id应该是@IdRes正常的整数不被接受。 val textview = findViewById(201) 创建动态文本视图: https ://nelsoncvjr.wordpress.com/2013/05/12/addremove-layout-dynamically-on-android/ public static void add(final Activity activity, final String value, final String hint, final boolean required) { final LinearLayout linearLayoutForm = activity.findViewById(R.id.linearLayoutForm); final RelativeLayout newView = (RelativeLayout) activity.getLayoutInflater().inflate(R.layout.row_form, null); newView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); newView.setTag(hint); final TextView tvRequired = newView.findViewById(R.id.tvRequired); tvRequired.setTag(required); if (required) […]
我不明白使用RxJava时,大括号和Kotlin中的正常括号之间的真正区别。 例如,我有以下代码,它按预期工作: someMethodThatReturnsCompletable() .andThen(anotherMethodThatReturnsACompletable()) .subscribe(…) 但以下不起作用: someMethodThatReturnsCompletable() .andThen { anotherMethodThatReturnsACompletable() } .subscribe(…) 用大括号注意链中的andThen()部分的区别。 我不明白这两者之间的区别是什么。 我已经看了一些文章,但不幸的是,我仍然很难理解这种微妙的差异。
我想从我的Android res目录中删除所有未使用的布局,字符串,drawables,颜色等。 是否有任何工具可以给我一个文件列表,我可以从我的存储库中删除和不再使用的特定文件(例如未使用的字符串条目)中的元素?