かずきのBlog

C#やJavaやRubyとメモ書き

目次

Blog 利用状況

ニュース

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

書庫

日記カテゴリ

[NetBeans][Java]モジュールからプロジェクトのライブラリにjarを追加するには

NetBeansのモジュール側からjarファイルをプロジェクトのクラスパスに追加したかった!

ライブラリに登録してあるものに関しては、色々情報があったけど、jarファイルを直接登録する方法は、なかなか見つからなかったのでメモする。
ポイントとなるクラスは、以下の1つのクラス。

org.netbeans.api.java.project.classpath.ProjectClassPathModifier

このクラスのaddRoots(URL[] classPathRoots, FileObject projectArtifact, String classPathType)このメソッドで追加できた。
各々の引数には、下記の値を渡す。

classPathRoots:FileUtil.getArchiveRoot(jarファイルのFileObject).getURL()したもの
projectArtifact:プロジェクトのソースフォルダのFileObject
classPathType:ClassPathクラスに定義されている定数(COMPILEかな)

ということで、プロジェクトフォルダの下にlibフォルダにあるhoge.jarを追加する場合のコードは下のような感じになる。

Project project = ....; // ProjectはどうにかしてとってくるFileOwnerQueryとかで
Sources sources = project.getLookup().lookup(Sources.class);
// ソースフォルダ取得
SourceGroup sourceGroup = sources.getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA);

// jarのFileObjectを取得
FileObject libDir = project.getProjectDirectory().getFileObject("lib");
FileObject hogeJar = libDir.getFileObject("hoge.jar");
FileObject hogeArchiveRoot = FileUtil.getArchiveRoot(hogeJar);

ProjectClassPathModifier.addRoots(new URL[]{ hogeArchiveRoot.getURL() }, sourceGroup.getRootFolder(), ClassPath.COMPILE);

たったこれだけなのに午後いっぱいくらい使ってしまったorz
因みに参考情報:http://fisheye5.cenqua.com/browse/sailfin/tools/netbeans/sip/src/main/java/org/jvnet/glassfish/comms/netbeans/sip/module/SIPProvider.java?r=1.6



投稿日時 : 2008年5月9日 17:28

Feedback

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