java.lang.NoClassDefFoundError は、「コンパイルしたときにはあったクラスが、実行するときに使えない」ときのエラーです。 原因は大きく2つに分かれます。メッセージの形を見ると、どちらかがすぐ分かります。

メッセージの形 何が起きたか 最初に見るところ
NoClassDefFoundError: com/example/Greeter(Caused by: ClassNotFoundException) クラスファイルが見つからない 実行時のクラスパスに jar があるか
NoClassDefFoundError: Could not initialize class Config クラスはあるが、static 初期化が前に失敗した 最初に出た ExceptionInInitializerError
NoClassDefFoundError: com/example/Greeter (wrong name: …) ファイル名と中身のクラス名が違う パッケージ・大文字小文字・置き場所
NoClassDefFoundError: Base(defineClass の中で発生) 親クラス・インターフェースが見つからない 継承元の jar があるか

ClassNotFoundException との違い:ClassNotFoundException は、Class.forName("…") のように文字列でクラス名を渡して探したときの例外です。NoClassDefFoundError は、new Greeter() のようにコードに書いた参照を JVM が解決できなかったときのエラーです。見つからない原因は同じでも、呼び方で出るものが変わります。

確認環境:OpenJDK 1.8.0_504・11.0.32.1・17.0.20.1・21.0.10・25.0.4.1(Linux)で、下に載せたプログラムを同じクラスファイル(--release 8 でコンパイル)のまま動かして、メッセージを比べました。jdeps・-Xlog:class+load は JDK 17・21 で動かしました。Maven のスコープの説明は Maven のドキュメントで確認しています(確認日 2026年10月13日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「NoClassDefFoundErrorの直し方|ClassNotFoundとの違い」

ClassNotFoundException との違いを実行して比べる

クラスパスに com.example.Greeter が無い状態で、同じクラスを2つの方法で読んだ結果です(5つの版で同じ結果でした)。

public class Forname {
    public static void main(String[] args) throws Exception {
        try { Class.forName("com.example.Greeter"); } catch (Throwable t) { System.out.println("forName: " + t); }
        try { Object o = new com.example.Greeter(); } catch (Throwable t) { System.out.println("new: " + t + " / cause=" + t.getCause()); }
    }
}
forName: java.lang.ClassNotFoundException: com.example.Greeter
new: java.lang.NoClassDefFoundError: com/example/Greeter / cause=java.lang.ClassNotFoundException: com.example.Greeter
項目 NoClassDefFoundError ClassNotFoundException
種類 Error(LinkageError の子) チェック例外(Exception の子)
出る場面 new・メソッド呼び出し・継承などで JVM がクラスを解決するとき Class.forName・ClassLoader.loadClass に文字列を渡したとき
名前の書き方 com/example/Greeter(スラッシュ区切り) com.example.Greeter(ドット区切り)
コンパイル時 そのクラスはあった 文字列なので、コンパイル時には調べられない
中に入っている原因 ClassNotFoundException、または初期化の失敗 なし(自分が原因)

API ドキュメントでは、NoClassDefFoundError は「探していたクラスの定義は、実行中のクラスをコンパイルしたときにはあったが、もう見つからない」ときに投げられると説明されています。メッセージがスラッシュ区切りなら、コードに書いた参照が原因と読めます。ClassNotFoundException 側の原因と対処は、関連記事「Java ClassNotFoundExceptionの原因と対処 違いも解説」で扱っています。

なお、起動時にメインクラス自体が見つからないときは、このエラーではなく Error: Could not find or load main class と出ます。こちらは関連記事「Could not find or load main classの原因と直し方」で扱っています。

原因一覧(メッセージ原文つき)

Java 21 で再現したメッセージです。

原因 メッセージ(先頭行) 直し方
実行時に jar が無い NoClassDefFoundError: com/example/Greeter 実行時のクラスパスに jar を足す
jar が前の版で、新しいクラスが無い NoClassDefFoundError: com/example/Formatter コンパイル時と同じ版の jar にそろえる
static 初期化が失敗した(2回目以降) NoClassDefFoundError: Could not initialize class Config 1回目の ExceptionInInitializerError の原因を直す
ファイル名と中身のクラス名が違う NoClassDefFoundError: com/example/Greeter (wrong name: com/example/Formatter) パッケージ・大文字小文字・置き場所を直す
親クラスが無い NoClassDefFoundError: Base 継承元のクラスを含む jar を足す
クラスパスの区切りが ; のまま(Linux) NoClassDefFoundError: com/example/Greeter Linux・macOS は : で区切る
ワイルドカードを *.jar と書いた NoClassDefFoundError: com/example/Greeter libs/* と書く
Java 11 以降で JAXB を使った NoClassDefFoundError: javax/xml/bind/DatatypeConverter JAXB の jar を足すか、java.util.Base64 に置き換える
requires static のモジュールが解決されていない NoClassDefFoundError: com/example/Greeter --add-modules で足す

以下、順に再現の手順と直し方です。

原因1:実行時のクラスパスに jar が無い

再現

app.jar(com.app.Main)は lib1.jar の com.example.Greeter を使います。コンパイルは lib1.jar を付けて通り、実行では付け忘れた状態です。

package com.app;
import com.example.Greeter;
public class Main {
    public static void main(String[] args) {
        System.out.println("start");
        if (args.length > 0 && args[0].equals("v2")) {
            System.out.println(new Greeter().hello("RJC", 2));     // lib2.jar で追加されたメソッド
        } else if (args.length > 0 && args[0].equals("fmt")) {
            System.out.println(com.example.Formatter.fmt("x"));   // lib2.jar で追加されたクラス
        } else {
            System.out.println(new Greeter().hello("RJC"));        // 11行目
        }
    }
}
$ java -cp app.jar com.app.Main
start
Exception in thread "main" java.lang.NoClassDefFoundError: com/example/Greeter
    at com.app.Main.main(Main.java:11)
Caused by: java.lang.ClassNotFoundException: com.example.Greeter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    ... 1 more

start が出てからエラーになっている点に注目します。 JVM は、クラスを「初めて使う行」まで読みに行きません。そのため、起動は成功し、めったに通らない処理(エラー処理・月末のバッチなど)で初めて落ちることがあります。

よくある場面

場面 何が起きているか
Maven の provided・test スコープ ドキュメントでは、provided は「コンパイルとテストのクラスパスには入るが、実行時のクラスパスには入らない」。test はテストだけ
Gradle の compileOnly コンパイルだけに使う依存。実行時には入らない
fat jar(全部入り jar)にしていない ドキュメントでは、-jar を使うとその jar がユーザークラスの読み込み元になり、-cp などほかのクラスパス指定は無視される
起動スクリプトが -cp を上書き 環境変数 CLASSPATH は、-cp を付けると無視される
IDE では動き、サーバーでは動かない IDE はビルド設定のクラスパスを自動で付けている

jar の作り方と Class-Path の書き方は、関連記事「Java jarファイルの作成と実行方法|クラスパス指定とMain-Class」で扱っています。Maven のスコープの指定は、関連記事「Mavenコマンド一覧|pom.xml書き方とよく使うオプション」で扱っています。

足りないクラスを事前に見つける:jdeps

JDK に付いている jdeps で、jar が参照しているのに見つからないクラスを一覧にできます。Java 21 の結果です。

$ jdeps --missing-deps -cp lib1.jar app.jar
app.jar -> not found
   com.app.Main                                       -> com.example.Formatter                              not found

not found の行が、実行時に NoClassDefFoundError になりうるクラスです。 本番に出す前に、CI でこのコマンドを動かすと、jar の付け忘れを早く見つけられます。

原因2:static 初期化の失敗(Could not initialize class)

1回目と2回目でエラーが変わる

クラスの static フィールドの初期化(static 初期化子)で例外が出ると、1回目は ExceptionInInitializerError、2回目以降は NoClassDefFoundError: Could not initialize class になります。 クラスファイルはちゃんとあるのに「NoClassDefFound」と出るので、迷いやすい形です。

public class Config {
    static final int PORT = Integer.parseInt(System.getProperty("app.port", "abc"));
    static int port() { return PORT; }
}
public class Static {
    public static void main(String[] args) {
        for (int i = 1; i <= 2; i++) {
            try {
                System.out.println(Config.port());
            } catch (Throwable t) {
                System.out.println("--- " + i + " ---");
                t.printStackTrace(System.out);
            }
        }
    }
}

Java 21 の出力です。

--- 1 ---
java.lang.ExceptionInInitializerError
    at Static.main(Static.java:5)
Caused by: java.lang.NumberFormatException: For input string: "abc"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:662)
    at java.base/java.lang.Integer.parseInt(Integer.java:778)
    at Config.<clinit>(Config.java:2)
    ... 1 more
--- 2 ---
java.lang.NoClassDefFoundError: Could not initialize class Config
    at Static.main(Static.java:5)
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NumberFormatException: For input string: "abc" [in thread "main"]
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:662)
    at java.base/java.lang.Integer.parseInt(Integer.java:778)
    at Config.<clinit>(Config.java:2)
    ... 1 more

<clinit> は static 初期化を表す、JVM の中での名前です。一度初期化に失敗したクラスは、そのクラスローダーの中では二度と使えません。 アプリを再起動するまで、Config を使うたびに Could not initialize class が出続けます。

版ごとの違い:Java 17 以降は最初の原因が付く

同じプログラムの2回目のエラーを5つの版で比べました。

版 2回目のメッセージ 最初の原因
OpenJDK 1.8.0_504 Could not initialize class Config 付かない
OpenJDK 11.0.32.1 Could not initialize class Config 付かない
OpenJDK 17.0.20.1 Could not initialize class Config Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NumberFormatException: For input string: "abc" [in thread "main"]
OpenJDK 21.0.10 同上 同上
OpenJDK 25.0.4.1 同上 同上

OpenJDK のバグ管理(JDK-8048190「NoClassDefFoundError omits original ExceptionInInitializerError」)では、JVM が最初の失敗を覚えておき、後の NoClassDefFoundError の原因として付けるように変えたと説明されています。バックポート先として 17.0.7 が挙がっています。Java 8・11 では、2回目のログだけを見ても原因が分かりません。 ログを最初までさかのぼり、最初の ExceptionInInitializerError を探します。

別のスレッドで失敗していた場合

最初の失敗が別スレッドだと、メインのログには出ないことがあります。worker-1 スレッドで先に Config を使い、そのあと main で使った結果です。

# Java 11
worker-1 failed: java.lang.ExceptionInInitializerError
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class Config
    at Thr.main(Thr.java:6)

# Java 21
worker-1 failed: java.lang.ExceptionInInitializerError
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class Config
    at Thr.main(Thr.java:6)
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NumberFormatException: For input string: "abc" [in thread "worker-1"]

[in thread "worker-1"] は、最初に失敗したスレッドの名前です。 スレッドプールの中で例外が握りつぶされていても、Java 17 以降ならここから探す場所が分かります。

直し方

  • static 初期化で、設定ファイルの読み込み・数値変換・外部接続など失敗しうる処理をしない。必要になったときに読むメソッドに移す
  • どうしても static で行うなら、失敗したときに分かりやすいメッセージで例外を投げ、ログに残す
  • 「Could not initialize class」が出たら、同じクラス名の ExceptionInInitializerError をログの先頭から探す

static の基本は、関連記事「Java staticとは|static変数・メソッドの使い方とエラー例」で扱っています。

原因3:wrong name(パッケージ・大文字小文字・置き場所)

com/example/Greeter.class というファイルの中身が、別のクラス(com.example.Formatter)だった状態を作って確かめました。

$ java -cp app.jar:wn com.app.Main
start
Exception in thread "main" java.lang.NoClassDefFoundError: com/example/Greeter (wrong name: com/example/Formatter)
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
    ...

(wrong name: …) の後ろが、ファイルの中に書かれていた本当のクラス名です。 Java 8 と 21 で同じ文面でした。次のようなときに起きます。

状況 例
パッケージ宣言とディレクトリが合っていない package com.example; のクラスを classes/Greeter.class に置いた
クラスパスの起点がずれている -cp out とすべきところを -cp out/com/example にした
大文字と小文字の違い 大文字小文字を区別しないファイルシステムで、greeter.class として Greeter を探した

パッケージとディレクトリの対応は、関連記事「Javaのpackageとimportの使い方|クラスパスの通し方」で扱っています。

原因4:親クラス・インターフェースが無い

Sub extends Base で、Base.class だけが無い状態です。Java 21 の結果です。

start
Exception in thread "main" java.lang.NoClassDefFoundError: Base
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
    ...
    at UseSub.main(UseSub.java:1)
Caused by: java.lang.ClassNotFoundException: Base

コードに書いたのは new Sub() なのに、エラーには Base と出ます。 スタックトレースに defineClass があれば、「クラスを読み込む途中で、その親を探して失敗した」と読めます。ライブラリ A が、別のライブラリ B のクラスを継承しているときに、B を入れ忘れると起きます。

原因5:クラスパスの書き方(: と ;・ワイルドカード)

java コマンドのドキュメントでは、クラスパスの区切りは「Windows ではセミコロン(;)、それ以外ではコロン(:)」です。Windows 用の起動スクリプトを Linux にそのまま持ってきた状態を再現しました。

$ java -cp "app.jar:lib1.jar;lib2.jar" com.app.Main
start
Exception in thread "main" java.lang.NoClassDefFoundError: com/example/Greeter
    at com.app.Main.main(Main.java:11)

Linux では lib1.jar;lib2.jar が1つのファイル名として扱われ、そのファイルは無いので、黙って無視されます。クラスパスにある存在しない場所は、エラーにも警告にもなりません。

ワイルドカードも同じです。ドキュメントでは、「* だけを名前にした要素」が、そのディレクトリの .jar 全部に展開されます。

書き方 結果(Java 21)
-cp "app.jar:libs/*" 動いた(libs の jar が全部入る)
-cp "app.jar:libs/*.jar" NoClassDefFoundError: com/example/Greeter
-cp app.jar:libs/*.jar(クォートなし、zsh) シェルが先に展開しようとして no matches found
Windows:-cp "app.jar;libs\*" ドキュメント上の正しい形

ワイルドカードは * だけ、そしてクォートで囲むのが、ドキュメントどおりの書き方です。展開される jar の順番は決まっていない、とドキュメントにあります。同じクラスが2つの jar にあると、次の原因6の問題が起きます。

原因6:jar の版違い(NoSuchMethodError との関係)

lib1.jar(前の版)には Greeter だけ、lib2.jar(新しい版)には Greeter.hello(String, int) と Formatter クラスが追加されています。app.jar は lib2.jar でコンパイルし、実行時に lib1.jar を付けた結果です。

使ったもの 実行時に前の版の jar だと 意味
新しい版で追加されたクラス NoClassDefFoundError: com/example/Formatter クラスごと無い
新しい版で追加されたメソッド NoSuchMethodError クラスはあるが、メソッドが無い
新しい版で追加されたフィールド NoSuchFieldError クラスはあるが、フィールドが無い

どれも「コンパイル時と実行時で jar の版が違う」ことが原因です。 NoSuchMethodError のメッセージは、Java 8 と 11 以降で書き方が変わりました。

版 メッセージ
Java 8 NoSuchMethodError: com.example.Greeter.hello(Ljava/lang/String;I)Ljava/lang/String;
Java 11・17・21・25 NoSuchMethodError: 'java.lang.String com.example.Greeter.hello(java.lang.String, int)'

Java 8 の (Ljava/lang/String;I)Ljava/lang/String; は、JVM の中での型の書き方(ディスクリプタ)です。L…; はクラス、I は int を表し、括弧の後ろが戻り値の型です。

両方の jar が入っているとき

lib1.jar と lib2.jar の両方をクラスパスに入れても、前に書いたほうが使われます。

$ java -Xlog:class+load -cp app.jar:lib1.jar:lib2.jar com.app.Main v2
[0.086s][info][class,load] com.example.Greeter source: file:/…/lib1.jar
start
Exception in thread "main" java.lang.NoSuchMethodError: 'java.lang.String com.example.Greeter.hello(java.lang.String, int)'

-Xlog:class+load(Java 8 では -verbose:class)で、クラスをどの jar から読んだかが分かります。 同じライブラリの2つの版が入っていないかは、Maven なら mvn dependency:tree、Gradle なら gradle dependencies で依存の木を見て確かめます。Maven のドキュメントでは、木の中に同じものの版が複数あると「プロジェクトに近いほうの版」が選ばれます。そのため、意図しない版が選ばれることがあります。

Java 8 の出力 Java 21 の出力
[Loaded com.example.Greeter from file:/…/lib1.jar] [0.086s][info][class,load] com.example.Greeter source: file:/…/lib1.jar

原因7:Java 11 で消えたクラス(javax.xml.bind など)

Java 8 でコンパイルして動いていたプログラムを、そのまま Java 11 以降で動かした結果です。

public class Jaxb {
    public static void main(String[] args) {
        System.out.println(javax.xml.bind.DatatypeConverter.printHexBinary(new byte[]{1, 2, (byte)0xAB}));
    }
}
版 結果
Java 8 0102AB
Java 11・21・25 NoClassDefFoundError: javax/xml/bind/DatatypeConverter(Caused by: ClassNotFoundException)

JEP 320 で、Java 11 から JAXB(java.xml.bind)・JAX-WS(java.xml.ws)・CORBA など9つのモジュールが JDK から外されました。JEP 320 では、JAXB を使い続けるなら単体の jar をクラスパスに足す、DatatypeConverter を Base64 のために使っていたなら Java 8 からある java.util.Base64 に置き換える、と案内されています。

Java の版を上げたら javax/xml/bind・javax/annotation・javax/activation などの NoClassDefFoundError を疑います。 クラスファイルの版が新しすぎるときは別のエラー(UnsupportedClassVersionError)になります。こちらは関連記事「UnsupportedClassVersionErrorの直し方|版の対応表」で扱っています。

原因8:モジュール(JPMS)の場合

Java 9 からのモジュール(module-info.java を持つ jar)では、必要なモジュールが見つからないと、起動の時点で止まります。 NoClassDefFoundError ではなく、次のメッセージになります(Java 21)。

Error occurred during initialization of boot layer
java.lang.module.FindException: Module lib not found, required by app

モジュールで NoClassDefFoundError になりやすいのは、requires static(コンパイル時だけ必須) の場合です。

module app { requires static lib; }
$ java -p mods -m app/com.app.Main
start
Exception in thread "main" java.lang.NoClassDefFoundError: com/example/Greeter
    at app/com.app.Main.main(Main.java:5)
Caused by: java.lang.ClassNotFoundException: com.example.Greeter

$ java -p mods --add-modules lib -m app/com.app.Main
start
Hello, RJC

lib はモジュールパス(-p mods)に置いてありますが、requires static は実行時に自動では読み込まれません。--add-modules lib で読み込む対象に足すと動きました。 スタックトレースの app/com.app.Main の app/ は、そのクラスが入っているモジュール名です。

状況 出るもの
requires lib で lib が無い 起動時に FindException: Module lib not found, required by app
requires static lib で lib が解決されない 使った行で NoClassDefFoundError
lib をクラスパス(-cp)にだけ置いた requires lib なら起動時に FindException(名前付きモジュールはクラスパスを見ない)

調べる順番(チェックリスト)

  1. メッセージの形を見る:Could not initialize class なら原因2、wrong name なら原因3、それ以外は「見つからない」
  2. Caused by を見る:ClassNotFoundException ならクラスパスの問題、ExceptionInInitializerError なら初期化の問題
  3. どの jar に入っているはずかを調べる:jar tf lib.jar | grep Greeter
  4. 実行時のクラスパスを見る:起動コマンド・起動スクリプト・MANIFEST.MF の Class-Path
  5. どこから読まれたかを見る:-Xlog:class+load(Java 8 は -verbose:class)
  6. 足りないものを一覧にする:jdeps --missing-deps -cp 依存jar 自分のjar

よくある質問

Q. catch (Exception e) で受け止められません。 A. NoClassDefFoundError は Error の子クラスで、Exception の子ではないためです。受け止めるには catch (NoClassDefFoundError e) か catch (Throwable t) と書きます。ただし、多くは構成の誤りなので、受け止めて処理を続けるより、起動の時点で気づける形にするほうが原因が残りません。例外の種類の関係は、関連記事「Java 例外一覧|種類・原因・対処の早見表と使い分け」で扱っています。

Q. 再起動すると直り、しばらくするとまた出ます。 A. static 初期化が、外部の状態(DB 接続・設定サーバー・ファイル)しだいで失敗している可能性があります。最初の1回だけが ExceptionInInitializerError で、あとは Could not initialize class が続くので、ログの最初の失敗を探します。

Q. 手元では動き、サーバーでだけ出ます。 A. 実行時のクラスパスが違うことが多いです。両方で -Xlog:class+load を付けて動かし、クラスがどの jar から読まれたかを比べます。

まとめ

  • コンパイル時にはあったクラスが、実行時に使えないときのエラー
  • ClassNotFoundException は文字列で探したとき、NoClassDefFoundError はコードの参照を解決するときに出る
  • Could not initialize class は、クラスはあるが static 初期化が前に失敗した印。Java 17 以降は最初の原因が Caused by に付く
  • wrong name はパッケージと置き場所の食い違い。defineClass の中なら親クラスが無い
  • Linux のクラスパスは : 区切り、ワイルドカードは libs/*
  • jar の版違いは、クラスなら NoClassDefFoundError、メソッドなら NoSuchMethodError
  • 調べる道具は jar tf・-Xlog:class+load・jdeps --missing-deps

参考・出典

確認日はいずれも 2026年10月13日です。

  • Java SE 21 API「NoClassDefFoundError」:https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/NoClassDefFoundError.html
  • Java SE 21 API「ExceptionInInitializerError」:https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/lang/ExceptionInInitializerError.html
  • Java SE 21「The java Command」:https://docs.oracle.com/en/java/javase/21/docs/specs/man/java.html
  • OpenJDK「JDK-8048190 NoClassDefFoundError omits original ExceptionInInitializerError」:https://bugs.openjdk.org/browse/JDK-8048190
  • OpenJDK「JEP 320: Remove the Java EE and CORBA Modules」:https://openjdk.org/jeps/320
  • Apache Maven「Introduction to the Dependency Mechanism」:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「NoClassDefFoundErrorの直し方|ClassNotFoundとの違い」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?