2016-04-11 7 views
3

すべてのバイナリ、ソースファイル、ライブラリをまとめたJavaプロジェクトがあります。 私はそれをEclipseワークスペースに配置しましたが、何らかの目的のためにEclipseプロジェクトに変換したいと思っていました。 私は次の作業のために以下のコード行を書いています。プログラムでEclipseプロジェクトを作成するときに予期しない動作が発生する

IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
IWorkspaceRoot root = workspace.getRoot(); 
IPath rootPath = root.getLocation(); 
File rootFile = rootPath.toFile(); 
File[] contents = rootFile.listFiles(); 


for(File file : contents) { 
    if(file.isDirectory() && !file.getName().startsWith(".")) { 


     File[] projectContents = file.listFiles(); 

     //First create a simple project of type org.eclipse.core.resources.IProject: 
     IProject project = root.getProject(file.getName()); 
     if(!project.exists()) { 
      project.create(null); 
     } 
     else { 
      project.refreshLocal(IResource.DEPTH_INFINITE, null); 
     } 
     if (!project.isOpen()) { 
      project.open(null); 
     } 



     IFolder binFolder = project.getFolder("bin"); 

     if(!binFolder.exists()) { 
      binFolder.create(false, true, null); 
     } 
     //Now we can create our Java project 
     IJavaProject javaProject = JavaCore.create(project); 
     javaProject.setOutputLocation(binFolder.getFullPath(), null); 


     <Remaining lines of code> 
    } 
} 

私は既に作成済みのクラスファイルを使いたいと思っていました。だから私は次の行をコメントしました:

しかし、今でもbinフォルダが作成され、クラスファイルが生成されました。そして、これらのクラスファイルは、私たちが持っていたものではなく、彼らのすべてがそのプロパティに最新のタイムスタンプを持っていたからです。

私はそれがこの行に起因すると確信しています。

 IJavaProject javaProject = JavaCore.create(project); 

誰も私にこのようなことが起こっていると言うことができます。私は、特にプロジェクトをビルドするための以下のコード行を追加していませんでした。

  if(!javaProject.hasBuildState()) { 
       project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, null); 
      } 

あなたはまた、どのようにプログラム的に私が持っているバイナリ、ソースファイルとライブラリを使用してプロジェクトをEclipseにJavaプロジェクトを変換するために私に言うことができる場合、私は感謝するでしょう。

答えて

0

既存のソースウィザードでimport javaプロジェクトを使用できます。 私が個人的に使ったもう一つのショートカットは、希望の名前で新しい空のjavaプロジェクトを作成し、既存のjavaプロジェクトのすべてのリソース(src、libなど)をbinと.projectファイル以外の新しいプロジェクトにコピーすることです。必要に応じて、プロジェクトのプロパティからソースディレクトリとライブラリを設定します。

+0

私はEclipseのGUIを使いたくないのですが、むしろプログラマチックにしています。 –

関連する問題