かずきのBlog

C#やJavaやRubyとメモ書き

目次

Blog 利用状況

ニュース

わんくまBlogが不安定になったため、前に書いてたはてなダイアリーにメインを移動します。
かずきのBlog@Hatena
技術的なネタは、こちらにも、はてなへのリンクという形で掲載しますが、雑多ネタははてなダイアリーだけに掲載することが多いと思います。
コメント
プログラマ的自己紹介
お気に入りのツール/IDE
プロフィール
経歴
アクセサリ

書庫

日記カテゴリ

[NetBeans][Java][plugin開発]FileSystemに登録したjarをプロジェクトのクラスパスに登録

1つ前の投稿とのあわせ技で、プラグイン内に埋め込んだjarファイルをプロジェクトの下のlibフォルダにコピーしてクラスパスに追加するということが出来る。
spring.jarをコピーして追加してクラスパスに追加するコードは下のようになる。

まず、プラグインのプロジェクトの適当なパッケージにjarを追加する。
ここでは、org/yourorghere/module3/spring.jarに置いたとして話を進める。

そして、layer.xmlに登録する。

<folder name="MyArchives">
    <file name="spring.jar" url="nbresloc:/org/yourorghere/module3/spring.jar"></file>
</folder>

後はコードで、コピって追加するだけ。

Project project = ....; // プロジェクトはどうにかしてとってくる
Sources sources = project.getLookup().lookup(Sources.class);
SourceGroup[] groups = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA);

// ファイルシステムからjarを取得
FileSystem fs = Repository.getDefault().getDefaultFileSystem();
FileObject springJar = fs.getRoot().getFileObject("MyArchives/spring.jar");

try {
    // libフォルダを作ってコピーする
    FileObject libDir = project.getProjectDirectory().createFolder("lib");
    FileUtil.copyFile(springJar, libDir, springJar.getName());

    // jarファイルをクラスパスへ追加する
    FileObject[] jars = libDir.getChildren();
    URL[] uris = new URL[jars.length];
    for (int i = 0; i < jars.length; i++) {
        uris[i] = FileUtil.getArchiveRoot(jars[i]).getURL();
    }
    ProjectClassPathModifier.addRoots(uris, groups[0].getRootFolder(), ClassPath.COMPILE);
} catch (MalformedURLException ex) {
    Exceptions.printStackTrace(ex);
} catch (IOException ex) {
    Exceptions.printStackTrace(ex);
} catch (UnsupportedOperationException ex) {
    Exceptions.printStackTrace(ex);
}

今日は、これがわかっただけで満足。
来週ものは作ろう。

投稿日時 : 2008年5月9日 18:19

Feedback

No comments posted yet.
タイトル  
名前  
Url
コメント