質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

Q&A

解決済

1回答

6426閲覧

[Intellij]自作のjarを読み込み直接使いたい。

AsadaDayo

総合スコア1

Scala

ScalaはJava仮想マシンで動作を行うオブジェクト指向型プログラミング言語の1つです。静的型付けの関数型言語で、コンパイルエラーの検出に強みがあります。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

IntelliJ IDEA

IntelliJ IDEA(インテリジェイ アイディア)は、JetBrains社が開発した、 JavaやScalaなどで利用される統合開発環境です。

0グッド

0クリップ

投稿2021/06/03 17:37

##Intellijで自作したjarファイルをimportしたい。

質問: 
自作のモジュールをインポートしてプロジェクト内でモジュール内の関数や定数を使いたいのですが調べてもやり方がわかりません。また、可能なのでしょうか。
sbtの公式ドキュメントにはlibsに配置するだけ!と書いてあったのですが上手くいきません。。。
どなたか御教授いただけると幸いです。

発生している問題・エラーメッセージ

[error] C:\Users\hooge\Documents\Scala-workspace\hogehoge\src\main\scala\Main.scala:1:8: not found: object CodeModule [error] import CodeModule._ [error] ^ [error] C:\Users\hoge\Documents\Scala-workspace\hogehoge\src\main\scala\Main.scala:6:12: not found: value Major [error] val x= Major [error] ^ [error] two errors found

該当のソースコード

import CodeModule._ object Main{ def main(args: Array[String]): Unit = { val x= Major println(x) } }

試したこと

1: File-> Project Structure-> Modules-> Dependencies にてjarを追加exportにチェックしapply
2: File-> Project Structure-> Libraries にてjarを追加しapply
3: libsにjarを配置,
build.sbtにunmanagedBase := baseDirectory.value / "libs"を記載
4: main/resourcesにjarを配置
5: main/scalaにjarを配置

1 から 5まで一つずつ試しましたが上手くいきませんでした。

###実行環境
sbt -version 0.1
scala -version 2.13.6
Intellij IDE

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プロジェクトルートの直下に lib ディレクトリーを作成し、
そこに作成した jar ファイルを置いていただければ大丈夫です。

ディレクトリ構成

画像のような構成になります(scala-module-lib-0.1.jar が自作jar です)。
イメージ説明

ソースコードの中身

ソースコードの構成はこういう感じです

  • scala-module-lib-0.1.jar に含まれる Point class

scala

1package com.github.keyno.point 2 3case class Point(x: Int, y: Int) { 4 def distance(): Int = x + y 5}
  • 自作jar を使うオブジェクト(Main)

scala

1import com.github.keyno.point.Point 2 3object Main extends scala.App { 4 5 val point = Point(1, 10) 6 println(point.distance()) 7}

sbt によるコンパイル・実行

この状態で、sbt compile とか、sbt runで成功します。
以下は sbt compile の場合

>sbt compile [info] welcome to sbt 1.5.3 (Azul Systems, Inc. Java 14.0.2) (省略) [info] Non-compiled module 'compiler-bridge_2.13' for Scala 2.13.6. Compiling... [info] Compilation completed in 7.909s. [success] Total time: 9 s, completed 2021/06/04 3:57:42

Intellij IDEA でのライブラリ追加、実行

Intellij から実行する場合、Intellij にもライブラリの場所を教えてあげないといけなさそうです。
この場合は、以下の手順で追加してもらえれば大丈夫と思います
0. 番号リスト 配置した jar を右クリック
0. ツールバーの下の方にある、「Add as Library...」を選択(下の画像参照)
0. 「Create Library」というのが表示されるので、追加の設定をする。(おそらく変更なしのままOK)
0. 読み込みたいクラスファイルで解決ができていること、補完が聞くことを確認できます
0. 実行などしたければ、通常のプロジェクトと同様に Intellij の Task から実行可能です

イメージ説明

投稿2021/06/03 19:10

kiino

総合スコア557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AsadaDayo

2021/06/04 13:29

とてもご丁寧にありがとうございます!! ただ回答者様と同じソースコード、同じやり方で試したのですがずっと同じエラーが流れます。。 File-> setting-> BuildTools-> sbt にてsbtshell.usefor の二つにチェック、Allow override...にチェックしているのですが設定が間違っているのでしょうか。 また回答者様のようにgithubのパッケージを使わないといけないのでしょうか。 何卒宜しくお願い致します。
kiino

2021/06/04 15:02

> 同じやり方で試したのですがずっと同じエラーが流れます。。 質問者さまのディレクトリ構成と、build.sbt と、 エラーが出るときに実行した手順を教えてもらってもよいでしょうか? (同じ、と記載されてますが、sbt コマンドをコマンドプロンプトで実行したのか、Intellij の sbt shell で実行したのかなど。ちなみに私はターミナルでもsbt shell でも実行可能でした) 質問文に追記したりしてもらっても構いません。 > File-> setting-> BuildTools-> sbt にてsbtshell.usefor の二つにチェック、Allow override...にチェックしているのですが設定が間違っているのでしょうか。 こちらは特に関係ない認識です。 私はチェックボックスを有効・無効にして試しましたが、今回のは動作差分ありませんでした。 package はなんでも問題と思います。 任意のパッケージ名でも動作するのを表現したくて com.github.*** を使っている感じでした。 参考書などで変数名に hoge とか fuga とか使ってるのと同じ程度のものととらえてください。
AsadaDayo

2021/06/04 15:39

ありがとうございます!! それと解決しました!回答者様が教えていただいたディレクトリ構造でbuild.sbtにunmanagedBase := baseDirectory.value / "lib"と記述する事で無事解決しました! 経験のあるプログラマの方々には脱帽する毎日です笑
kiino

2021/06/04 15:40

解決したようで何よりです。 先程のエラーの件が気がかりですが、問題解決したのであればよかったです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問