Size: a a a

2019 August 07

VP

Vladimir Petrakovich in Kotlin JVM
Андрей
Подскажите пожалуйста, как объяснить происходящее на 3 и 4 инструкции? В стек кладется 0, затем заносится в локальную переменную 1. И потом не используется. Зачем это может быть нужно? Код примера
fun main() = println("Hello world")
Могу только предложить открыть в javap и посмотреть что за локальная переменная 1.
Но в любом случае компилятор явно нагенерил лишнее.
источник
2019 August 08

AS

Andrey Sidorenko in Kotlin JVM
Вопрос. Каким образом правильно собрать либу, для использования в других проектах?
IntelliJ Idea 2019.2
Собрал. Подключаю к проекту следующим образом:
dependencies {
   implementation(files("libs/lib.jar"))
}

Выглядит так, будто она подключилась (я могу развернуть джарник, посмотреть его содержимое, все ок)
Однако идея не видит ничего оттуда (скрин прикреплен)

При попытке запустить проект - запускается, функция выполняется, все ок

Сборка с помощью shadowJar

ЧЯДНТ? Баг идеи?
источник

RI

Ruslan Ibragimov in Kotlin JVM
Делаешь shadowJar как зависимость в первуй очередь и не используешь репозиторий
источник

RI

Ruslan Ibragimov in Kotlin JVM
Не надо так делать, задеплой либу как jar с зависимостями в репу и подключи в другом проекте
источник

AS

Andrey Sidorenko in Kotlin JVM
А если в этом есть необходимость?

Репозиторий не использую. Весь build.gradle состоит исключительно из
dependencies {
   implementation(files("libs/lib.jar"))
}


Родительский проект имеет следующую структуру:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
   kotlin("jvm") version "1.3.41"
}

subprojects {
   apply(plugin = "org.jetbrains.kotlin.jvm")

   repositories {
       mavenCentral()
       jcenter()
   }

   dependencies {
       implementation(kotlin("stdlib-jdk8"))
       implementation("org.jetbrains.kotlinx", "kotlinx-coroutines-core", "1.3.0-RC")
   }

   tasks.withType<KotlinCompile> {
       kotlinOptions.jvmTarget = "1.8"
   }
}
источник

RI

Ruslan Ibragimov in Kotlin JVM
Делать fat jar и подключать как либу обычно нету хорошей причины
источник

AS

Andrey Sidorenko in Kotlin JVM
Это понятно
Но к сожалению пока что иного выхода нет
Поэтому приходится выкручиваться таким образом

К нам неоднократно приходят именно джарники в виде либ, и с ними почему-то все ок (проприетарные библиотеки для взаимодействия с проприетарным железом)
Вот и вопрос - как?
источник

DB

Dmitry Baynak in Kotlin JVM
Andrey Sidorenko
Вопрос. Каким образом правильно собрать либу, для использования в других проектах?
IntelliJ Idea 2019.2
Собрал. Подключаю к проекту следующим образом:
dependencies {
   implementation(files("libs/lib.jar"))
}

Выглядит так, будто она подключилась (я могу развернуть джарник, посмотреть его содержимое, все ок)
Однако идея не видит ничего оттуда (скрин прикреплен)

При попытке запустить проект - запускается, функция выполняется, все ок

Сборка с помощью shadowJar

ЧЯДНТ? Баг идеи?
Попробуй написать импорт руками, идея иногда тупит на штуках вроде it.unimi.dsi.fastutil.objects.Object2ObjectRBTreeMap (например, внутри лямбды с аргументом с именем it, хотя вне всё норм).
by ключевое слово ведь
источник

AS

Andrey Sidorenko in Kotlin JVM
источник

AS

Andrey Sidorenko in Kotlin JVM
Пытался всяко-разно
Оно даже jackson, запакованный внутрь намеренно, не видит
источник

AS

Andrey Sidorenko in Kotlin JVM
И он там и правда имеется
источник

RI

Ruslan Ibragimov in Kotlin JVM
Попробуй руками в проект добавить jar
источник

RI

Ruslan Ibragimov in Kotlin JVM
Project Structure -> Libraries ->  + -> Java
источник

AS

Andrey Sidorenko in Kotlin JVM
В чистом проекте вообще никак не подключает и теперь хотя бы бросает ошибку Package cannot be imported
источник

AS

Andrey Sidorenko in Kotlin JVM
Invalidate Caches and restart (который надо делать в любой непонятной ситуации) тоже делал
Тоже ноль эффекта
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ну значит Idea не может по какой-то причине её импортнуть -> не работает автокомлпит. Кури что не так с самой jar
источник

AS

Andrey Sidorenko in Kotlin JVM
Да пытался... Только делается fatJar - все плохо. Не fatJar - все ок
Не разбираясь сам - не писал бы сюда
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ну может все-таки стоит не делать fatJar, а хоть через локальный мавен работать
источник

AS

Andrey Sidorenko in Kotlin JVM
Чистый проект, так же импорт градлом:
plugins {
   id 'java'
   id 'org.jetbrains.kotlin.jvm' version '1.3.41'
}

group 'test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
   mavenCentral()
}

dependencies {
   implementation fileTree(dir: "lib")
   implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
   
   testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileKotlin {
   kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
   kotlinOptions.jvmTarget = "1.8"
}


Тот же прикол - запускается, но не видит
источник

AS

Andrey Sidorenko in Kotlin JVM
Ну, людям, которым надо выдать либу, добавится еще и гайд по использованию локального мавен репозитория
источник