すべてのバイナリ、ソースファイル、ライブラリをまとめた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プロジェクトを変換するために私に言うことができる場合、私は感謝するでしょう。
私はEclipseのGUIを使いたくないのですが、むしろプログラマチックにしています。 –