Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse插件:html站点的jar目录路径_Java_Html_Image_Jar_Eclipse Plugin - Fatal编程技术网

Java Eclipse插件:html站点的jar目录路径

Java Eclipse插件:html站点的jar目录路径,java,html,image,jar,eclipse-plugin,Java,Html,Image,Jar,Eclipse Plugin,我正在用我的Eclipse插件生成一个临时html站点。看起来,不可能像Java Swing那样使用普通方式,如下所示: URL location = getClass().getResource("/img/notifications/pic.png"); InputStream inputStream = location.openStream(); final Image ideaImage = new Image(display, inputStream); 我试着用这个,但从逻辑上讲

我正在用我的Eclipse插件生成一个临时html站点。看起来,不可能像Java Swing那样使用普通方式,如下所示:

URL location = getClass().getResource("/img/notifications/pic.png");
InputStream inputStream = location.openStream();
final Image ideaImage = new Image(display, inputStream);
我试着用这个,但从逻辑上讲,我只得到一个捆绑包eresource://592.fwk513700442:1/img/html/pic.png.

因此,目前我正在使用以下方法:

URL configURL = bc.getBundle().getResource("/img/html/pic.png");
File configFile = new File(FileLocator.toFileURL(configURL).getPath());
location = configFile.toString().substring(0, configFile.toString().length()-7);
// 7 = length of "pic.png" to get the root folder
这是可行的,但仅适用于我在上面输入名称的图像。我认为在所有图像上循环是很麻烦的,所以一定有更好的解决方案

另一个解决方案是将我的所有JAR内容提取到本地文件夹中,但这并不是我真正想要的,因为用户不应该能够轻松访问所有文件

编辑:澄清

我有一个jar格式的导出插件。在这个插件中,我打开用户的本机浏览器并打开一个临时文件。我是通过以下课程来实现这一点的:

package de.stefansurkamp.handlers;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import org.eclipse.core.runtime.FileLocator;
import org.eclipse.equinox.security.storage.StorageException;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;

public class WebsiteGenerator {

    private StringBuilder output = new StringBuilder();
    private ArrayList<Member> achievementList = new ArrayList<Member>();
    private String location;

    public WebsiteGenerator() {
        try {
            // get location information
            BundleContext bc = FrameworkUtil.getBundle(WebsiteGenerator.class).getBundleContext();              
            URL configURL = bc.getBundle().getResource("/img/html/firstCompile.png");
            File configFile = new File(FileLocator.toFileURL(configURL).getPath());
            location = configFile.toString().substring(0, configFile.toString().length()-16);

            // append HTML head
            output.append("<!DOCTYPE html><html><head></head>");

            // apend HTML body
            output.append(generateHtmlBody());
        }
        catch(IOException e1) {
            System.out.println(e1.getMessage());
        }
    }

    public void createPage() throws IOException, PartInitException {
        File temp = File.createTempFile(Long.toString(System.currentTimeMillis()),".html");
        FileWriter writer = new FileWriter(temp);
        writer.write(output.toString());
        writer.close();
        PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(temp.toURI().toURL());
        temp.deleteOnExit();
    }

    private String generateHtmlBody() throws IOException {
        try {
        StringBuilder stringBuilder = new StringBuilder(7250);
        stringBuilder.append("<body>");

        [a lot of other appends]

        stringBuilder.append("<img width=\"162\" height=\"162\" src=\"" + location + getAchievementID() + ".png\" alt=\"");
        // getAchievementID returns an "id" which is equal to the picture name i want to insert here.
        stringBuilder.append("</div>");
        stringBuilder.append("</body>");
        stringBuilder.append("</html>");

        return stringBuilder.toString();
        }
        catch(StorageException e) {
            System.out.println("STORAGE EXCEPTION: " + e.getErrorCode());
            return "";
        }
    }    
}
虽然这不是一个SSCCE,但我希望我如何创建网站变得清晰起来


这里的问题是,我不能使用如上所述的本地URL,因为图像路径根不在插件内部,而是在浏览器中的外部。有没有一个解决方案,如何找到jar包中指向图像文件夹的路径?

不太清楚您想做什么。你只是想从资源中获取SWT图像吗?@greg-449:我编辑了我最初的问题,并添加了一些代码和解释。