2017-02-20 600 views
0

我正在尝试编写eclipse插件。我需要在我的代码中使用一个jar文件。 。 的将jar添加到eclipse插件中

public class SampleHandler extends AbstractHandler { 
    @Override 
    public Object execute(ExecutionEvent event) throws ExecutionException { 

JAR文件内使用 方法P =调用Runtime.getRuntime()EXEC(checkStyle_cmd)直接访问; checkDtyle_cmd是字符串“java -jar”+“jar文件的位置”+(一些其他的东西)。

我创建了一个'lib'文件夹。用它作为源文件夹。把罐子粘在那里。在运行系统中向Classpath添加“/ProjectName/lib/jar_file_name.jar”。不工作。 因此,在bin中添加/Test5/lib/checkstyle-7.1.2-all.jar包含build.properties。仍然没有运气。 我无法访问jar文件错误

+0

如果你想运行在一个单独的进程罐子它并不一定要在当前类路径 - 您只需将**绝对**文件路径传递给java命令,但您可能还需要告诉'exec'确切地在哪里查找java命令。你究竟发生了什么错误? –

+0

我收到错误“Unamble访问jarfile /Test5/lib/checkstyle-7.1.2-all.jar”。它与绝对路径一起工作。但我需要将我的项目导出为jar插件,以便其他人可以使用它。所以,我需要给予相对路径。 –

回答

0

你可以在你的罐子里的绝对路径插件使用类似:

Bundle bundle = FrameworkUtil.getBundle(getClass()); 

URL url = FileLocator.find(bundle, new Path("/lib/jar_file_name.jar"), null); 

url = FileLocator.toFileURL(url); 

String path = URIUtil.toFile(URIUtil.toURI(fileURL)).getAbsolutePath(); 
+0

什么是Bundle和FrameworkUtil?我没有从Eclipse中得到任何建议来导入这些类 –

+0

它们位于'org.eclipse.osgi'插件中,因此将它添加到插件的依赖项中。 –

0

实际上从jar中提取代码比从命令行运行它更好。

在.jar文件夹中是字节码的.class文件,它由.java文件编译并由VM运行。您可以使用this网站反编译.class文件。

至于从命令行运行代码,正如其他人所说的,您需要知道绝对路径,并且相对路径有时可能不存在,将所有源代码编译为一个.jar而不是两个.jar的。

+0

我试图使用SampleHandler.class.getClassLoader()。getResource(“filename”)获取jar文件的路径;它不起作用。我尝试了一个文本文件。只有当文件在src文件夹中时才会得到输出。如果它位于lib文件夹中(我将其变为源文件夹)它不显示路径 –

相关问题