[KOTLIN] hoe een class importeren uit een eigen package?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Salvatron
  • Registratie: April 2003
  • Niet online

Salvatron

Dispereert niet

Topicstarter
Ik kan nergens een antwoord vinden op het volgende probleem in intellij (linux) met kotlin:

ik heb 2 projecten:

project 1:

code:
1
2
3
4
5
6
7
8
9
10
11
package com.test.untitled

class TestClass() {
    fun printTest() {
        println("Test")
    }
}

fun main() {
    println("Hello World!")
}


en project 2:

code:
1
2
3
4
5
6
7
package com.test.untitled2

import com.test.untitled.*

fun main() {
    println("Hello World!")
}


Het is dus de bedoeling om de klasse uit project 1 te importeren in project 2. Dit werkt echter niet omdat Intellij in project 2 de package van project 1 niet kan vinden. Ik gebruik hier Intellij zelf dus niet gradle of maven, maar met gradle lukt het me ook niet.

Iemand enig idee hoe je zulke zelfgemaakte packages kunt gebruiken?

[ Voor 12% gewijzigd door Salvatron op 01-12-2024 19:08 ]

Lucht en leegte, zegt Prediker, alles is leegte.

Alle reacties


Acties:
  • 0 Henk 'm!

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Salvatron schreef op zondag 1 december 2024 @ 01:35:
Iemand enig idee hoe je zulke zelfgemaakte packages kunt gebruiken?
Voor IntelliJ: je bouwt eerst een JAR met de zelfgemaakte packages er in en neemt deze op als dependency van het project dat de zelfgemaakte package moet importeren.

Alternatief kun je Eclipse gebruiken: Dan kun je project 1 en 2 in dezelfde workspace hebben. Dat heeft als voordeel dat je bij project 2, project 1 als dependency kunt opnemen zonder dat je een JAR hoeft te bouwen.

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


Acties:
  • 0 Henk 'm!

  • Salvatron
  • Registratie: April 2003
  • Niet online

Salvatron

Dispereert niet

Topicstarter
ari3 schreef op woensdag 25 december 2024 @ 18:37:
[...]

Voor IntelliJ: je bouwt eerst een JAR met de zelfgemaakte packages er in en neemt deze op als dependency van het project dat de zelfgemaakte package moet importeren.

Alternatief kun je Eclipse gebruiken: Dan kun je project 1 en 2 in dezelfde workspace hebben. Dat heeft als voordeel dat je bij project 2, project 1 als dependency kunt opnemen zonder dat je een JAR hoeft te bouwen.
Ik snap niet hoe het werkt, maar het werkt wel.

Intellij zegt alleen dat er nog een probleem is met de versie van Kotlin, maar de functie in de geïmporteerde JAR werkt wel:

Class 'com. test. untitled29.MainKt' is compiled by a pre-release version of Kotlin and cannot be loaded by this version of the compiler

Wat ik ervan begrijp is dus dat je voordat je de functies importeert met bijv. > import com.test.untitled29.* < dat je dus eerst aangeeft dat je die package wil importeren in project-settings onder modules.

Lucht en leegte, zegt Prediker, alles is leegte.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:50

Janoz

Moderator Devschuur®

!litemod

Nee, niet helemaal.

Je moet een package importeren omdat hetgeen je wilt gebruiken uit een ander project komt. Zou het package in hetzelfde project staan, of in een andere module binnen hetzelfde project, dan was de import alleen voldoende geweest.

Wat wil je precies bereiken?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Salvatron
  • Registratie: April 2003
  • Niet online

Salvatron

Dispereert niet

Topicstarter
Janoz schreef op maandag 6 januari 2025 @ 11:28:
Nee, niet helemaal.

Je moet een package importeren omdat hetgeen je wilt gebruiken uit een ander project komt. Zou het package in hetzelfde project staan, of in een andere module binnen hetzelfde project, dan was de import alleen voldoende geweest.

Wat wil je precies bereiken?
Ik wil mijn eigen functies, klassen, etc schrijven en dan kunnen gebruiken in mijn andere projecten. Ik neem aan dat dit bibliotheken of modules heten. Dus ik wil wat zelf schrijven en dan kunnen importeren.

Lucht en leegte, zegt Prediker, alles is leegte.


Acties:
  • +1 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 07:50

Janoz

Moderator Devschuur®

!litemod

Als je inderdaad een bibliotheek wilt maken van functionaliteit welke je in andere projecten wilt gebruiken dan zul je inderdaad van deze bibliotheek een project moeten maken, deze een jar laten bouwen en deze jar bij de andere projecten importeren. Misschien gaat het nu wat ver om helemaal in het dependency gebeuren te duiken (je library jar wordt een dependency van je andere project) dus voor nu lijkt me wat je nu doet een fatsoenlijke oplossing. Je zult alleen wel goed bij moeten houden welke versie van de library je eigenlijk in je project hebt zitten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1