плагин eclipse> как программно включить файл jar - PullRequest
0 голосов
/ 01 августа 2011

Итак ... я создал плагин для Eclipse, который генерирует новый проект java и рекламные файлы из шаблонов и т. Д. Однако код в каталоге / src не компилируется, потому что мне нужно добавить jarУ меня есть файл на вкладке библиотеки.

Проект уже является Java-проектом через:

org.eclipse.jdt.core.IJavaProject javaProject = org.eclipse.jdt.core.JavaCore.create(proj);
            org.eclipse.jdt.core.IClasspathEntry src = JavaCore.newSourceEntry(folder.getFullPath());
            IClasspathEntry jre = JavaCore.newContainerEntry(new Path(
                    org.eclipse.jdt.launching.JavaRuntime.JRE_CONTAINER), new IAccessRule[0],
                    new IClasspathAttribute[] {
                        JavaCore.newClasspathAttribute("owner.project.facets", "java")
                    }, false);
            IClasspathEntry[] entries = new IClasspathEntry[] {
                    src, jre
            };
            javaProject.setRawClasspath(entries, proj.getFullPath().append("bin"), new NullProgressMonitor());

И теперь, в принципе, мне нужно сделать программно, что кнопка "Добавить банки"... "делает.enter image description here

Некоторое время боролся с этим ...

Любые советы по коду или ссылка на учебник, который ТОЛЬКО ЭТО ТАКОЕ, будет полезен.Пожалуйста, нет ссылки на общие учебные пособия по Eclipse :), как я уже, наверное, видел их все ...

Спасибо большое

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Вот как я это сделал, не уверен, что ваши требования точно так же, но надеюсь, что это поможет каким-то образом ...

        IFile file = addJar(project, "/resources/myJar.jar", MY_JAR_TARGET_PATH, monitor); //$NON-NLS-1$
        newcpEntries.add(JavaCore.newLibraryEntry(file.getFullPath(), null, null, false));
        // .....

где addJar () выглядит примерно так:

private static IFile addJar(IProject project, String srcPath, String targetPath, IProgressMonitor monitor) {
    URL srcURL = MyPlugin.getDefault().getBundle().getEntry(srcPath);
    IFile file = project.getFile(targetPath);
    InputStream is = null;
    try {
        is = srcURL.openStream();
        file.create(is, true, monitor);
    } catch (CoreException e) {//...
              } catch (IOException e) {//...
              }
    finally {
        try {
            if (is != null)
                is.close();
        } catch (IOException ignored) {}
    }
    return file;
}
1 голос
/ 01 августа 2011

Не знаю, как бы вы это делали через API-интерфейсы eclipse, но все, что делает окно конфигурации jar, это записывает в ваш файл project-name/.classpath, который выглядит примерно так:

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
        <classpathentry kind="lib" path="x-jars/lucene-fast-vector-highlighter-3.0.3-patch1822.jar"/>
        <classpathentry kind="lib" path="x-jars/lucene-highlighter-3.0.3.jar"/>

Так что одним из вариантов было бы, чтобы ваш установочный код редактировал этот файл после создания проекта, но это, вероятно, слишком много хака для того, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...