如何让maven编译一个使用com.apple.eawt.Application的.java文件

时间:2016-02-22 21:17:12

标签: java macos maven

different question这里我找到了一个代码片段来处理我的java应用程序中的打开文件事件。但是,即使我在Mac OS X环境中构建我的应用程序,我的IDE也可以找到com.aple.eawt。*类(在我正在使用的Oracle SDK中的rt.jar中),maven找不到它们。我已经找到了关于我需要在pom.xml中做什么的线索,以暗示关于类路径的maven,但实际上这个建议似乎归结为:

1)将您需要的任何jar添加到项目仓库中

2)或使用不良形式并链接到特定的罐子。

由于我试图以一种仍然可以在其他平台上运行的方式构建这个应用程序,我想解决这个问题,而不必将整个Apple特定的运行时捆绑到构建中。

1 个答案:

答案 0 :(得分:3)

感谢上面的Tunaki链接,答案非常简单(我尝试将Apple jar添加到我的pom中并且没有用)。

<dependency>
  <groupId>com.yuvimasory</groupId>
  <artifactId>orange-extensions</artifactId>
  <version>1.3.0</version>
</dependency>

此外,在我的主类中,我的代码看起来有点不同,因为OpenFilesEvent.getFiles()的橙色扩展版本返回的是Object而不是File的集合:

  if (System.getProperty("os.name").contains("OS X")){
    com.apple.eawt.Application a = com.apple.eawt.Application.getApplication();
    a.setOpenFileHandler(new com.apple.eawt.OpenFilesHandler() {

        @Override
        public void openFiles(com.apple.eawt.AppEvent.OpenFilesEvent e) {
            for (Object oFile : e.getFiles()){
                if (oFile instanceof File) {
                    File file = (File) oFile;
                    // do the actual open logic here
                } else {
                    __l.warn("The OS just told us to open a file but handed us "+oFile.toString());
                }
            }
        }

    });