かずきのBlog
C#やJavaやRubyとメモ書き

目次

Blog 利用状況
  • 投稿数 - 362
  • 記事 - 1
  • コメント - 424
  • トラックバック - 97
ニュース
  • 思い出は、いっぱい。
コメント
プログラマ的自己紹介
  • C#とRubyを趣味で。Javaを仕事で使ってやってます。 WPFをコツコツ勉強中。 IDE大好き。Visual Studio, Eclipse, NetBeansを使用中
お気に入りのツール/IDE
  • Visual Studio 2008 std
  • Eclipse
  • NetBeans6.0以降
  • 自作のツール
プロフィール
  • 大田 一希
  • 1981年1月30日産まれ
  • AB型
  • 左利き
経歴
  • 1993年 海田中学校 入学
  • 1996年 広島県立安芸南高等学校 入学
  • 1999年 某大学 環境情報学科 入学
  • 2003年 某大学 大学院 環境学研究科 入学
  • 2005年 就職して上京
  • 今に至る
アクセサリ
  • あわせて読みたい
  • ログ解析ネット証券

書庫

日記カテゴリ

 

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
コメント
No comments posted yet.
タイトル  
名前  
Url
コメント