GVKun编程网logo

在Mac上的Java Swing应用程序中使用现在不建议使用的com.apple.eawt.ApplicationAdapter的替代方法是什么?

15

以上就是给各位分享在Mac上的JavaSwing应用程序中使用现在不建议使用的com.apple.eawt.ApplicationAdapter的替代方法是什么?,同时本文还将给你拓展AppleJav

以上就是给各位分享在Mac上的Java Swing应用程序中使用现在不建议使用的com.apple.eawt.ApplicationAdapter的替代方法是什么?,同时本文还将给你拓展Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?、Application application_1512618719369_147804 failed 2 times due to ApplicationMaster for attempt app、applicationId和packageName,以及在Manifest中使用${applicationId}写法、ApplicationListener ApplicationContextAware ApplicationEvent使用等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

在Mac上的Java Swing应用程序中使用现在不建议使用的com.apple.eawt.ApplicationAdapter的替代方法是什么?

在Mac上的Java Swing应用程序中使用现在不建议使用的com.apple.eawt.ApplicationAdapter的替代方法是什么?

看起来苹果已经弃用了我的应用正在使用的api。不知道如何解决此问题。具体用法可以在这里看到:

http://code.google.com/p/jarzilla/source/browse/trunk/jarzilla/src/main/java/com/googlecode/jarzilla/Jarzilla.java#192

答案1

小编典典

好的,经过一番谷歌搜索后,我得到了API文档(对我来说是第二个命中),它的第一句中包含:

不推荐使用。
替换为AboutHandler,PreferencesHandler,AppReOpenedListener,OpenFilesHandler,PrintFilesHandler,QuitHandler,QuitResponse。

(带有提到的接口和类的链接)。

因此,看起来您不应使用一个对象作为该抽象类的子类,而应将多个对象用于不同的用途,并使用Application对象对其进行注册。

Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?

Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?

TL; DR:苹果已经在 Java中删除了本机功能支持.特别是触控板手势不再工作.我写了一个使用JNI完成工作的库.看下面我的答案.

我正在寻找几个小时,使Apple Java Extensions在JDK 7或8上工作.我一直在努力尝试所有的想法.互联网上的所有线程关于这个简单地指责JDK.我认为这应该是可以解决的,因为它在JDK 6中有效.为了清楚起见,我可以使其在JDK 6中工作,但是我不希望这个遗留依赖关系,因为不是所有使用我的应用程序的人都有JDK 6或者知道安装吧,让我们说.目标是使用可安装的每个版本的Java(大于JDK 6)的操作系统X功能(菜单栏,手势,处理程序等)运行的双击可用JAR文件.

解决方法

自从OS X El Capitan的开发者预览版本开始,99%的普通计算机用户就不可能安装Java 6,所以这对我来说已经不再是一个选择.我终于决定编写一个本地库,通过JNI通知Java手势.该项目运行良好,由 GitHub托管.

看看这里:
https://github.com/mcourteaux/MultiTouch-Gestures-Java

Application application_1512618719369_147804 failed 2 times due to ApplicationMaster for attempt app

Application application_1512618719369_147804 failed 2 times due to ApplicationMaster for attempt app

今天遇到一个特别怪的问题,之前etl中的hive任务一直报错,持续一上午,也没有查出原因,错误的任务的日志也找到,原本可以找到原因,但是打开日志,心里面一凉,什么报错也没有,不知所错。最后观察报错的节点,最终集中到两台机器,那就看看是不是这两台机器的hadoop的程序引起的吗?看看他们的程序都在,但是查看nodemanager的日志一直报错,并且查看cpu,nodemanager进程占用的cpu达1000%多,马上眼前一亮,知道cpu占用太多,导致ap不能联系,导致任务失败,最后把这两台机器的nodemanager重启一下,观察了一下,任务不在报错。继续努力.............

applicationId和packageName,以及在Manifest中使用${applicationId}写法

applicationId和packageName,以及在Manifest中使用${applicationId}写法

1. 前言

  • 本文资料来源网络公开资源,并根据个人实践见解纯手打整理,如有错误请随时指出。
  • 本文主要用于个人积累及分享,文中可能引用其他技术大牛文章(仅引用链接不转载),如有侵权请告知必妥善处理。

2. applicationIdpackageName

2.1. IDEEclipse

applicationId基于gradle编译,Eclipse IDE 不存在applicationId,也不能使用它,请忽略。

2.2. IDEAndroid Studio

2.2.1 applicationId

  • 理论上来讲applicationIdandroid设备以及google play所公认的唯一标示。
  • 若未配置applicationId时,google play无法上线(据查)
  • 配置applicationId可以用作同一工程发布略有差异的不同apk,比如收费版和免费版、代码相同标示不同的渠道包等。
  • 配置方法(在appbuild.gradle中):

    • 一般配置

      android {
          ......
          defaultConfig {
              applicationId "sp.com.learncomposite"
              ......
          }
      }
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 设置不同的applicationId配置 
      其中关于productFlavors的应用可以参考这篇文章很详细:链接,或者参考官方文档:链接1,链接2。

      android {
          ......
          productFlavors {
              pro {
                  applicationId = "sp.com.learncomposite.pro"
              }
              free {
                  applicationId = "sp.com.learncomposite.free"
              }
          }
      
          buildTypes {
              ......
              debug {
                  applicationIdSuffix ".debug"
              }
          }
      }
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
  • release打包时,在签名界面,可以选择你将要打出的包,也可以多选并同时打出: 

  • debug调试时,可以再Android studio左下角的Build Variants标签中选择当前调试的是哪个包: 

2.2.2 packageName

  • 将仅被代码(如资源文件R.java)或Manifest清单中声明(如类的包路径和packageName相同时,activityname缩写为”.xxxActivity“)使用。

2.2.3 两者纠缠的关系

  • applicationId不存在时,applicationId将默认为packageName
  • applicationId存在时,packageName仅有其本身的功能,而applicationId将作为唯一标示。

3. 在Manifest中使用${applicationId}

  • Provider在声明android:authorities(该值必须唯一)时,如前缀为写死的包名字符串,当出现需要同一工程分包、分渠道打包时,安装在同一android设备将导致 INSTALL FAILED CONFLICTING PROVIDER 的报错(使用adb安装会有提示),这时可以使用${applicationId},这将避免android:authorities值非唯一的问题。

    <provider
        android:name="xxxx.xxxx.xxx.xxxProvider"
        android:authorities="${applicationId}.xxxx"
        android:grantUriPermissions="true"
        android:exported="false"/>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 1
    • 2
    • 3
    • 4
    • 5
  • ${applicationId}也可以用在Manifest中其他需要唯一的取值情况,这种使用方式很灵活。

ApplicationListener ApplicationContextAware ApplicationEvent使用

ApplicationListener ApplicationContextAware ApplicationEvent使用

AppCacheContext.JAVA

方法一:implements ApplicationListener

@SuppressWarnings("rawtypes")
public class AppCacheContext implements ApplicationListener{
	Logger logger = LoggerFactory.getLogger(AppCacheContext.class);
	@Autowired
	private static AppCacheContextDao cacheDao;
	
	public void onApplicationEvent(ApplicationEvent event) {
		Class<? extends ApplicationEvent> clazz = event.getClass();
		System.out.println(clazz.getName());
		if(event instanceof ContextRefreshedEvent){
			ApplicationContext appcontext = ((ApplicationContextEvent) event).getApplicationContext().getParent();
			if(appcontext != null){
				try {
					// 数据字典初始化
					initDicDetailCache();
					logger.info("----------------数据字典初始化完成----------------------");
				} catch (Exception e) {
					e.printStackTrace();
				} 
			}
		}
	}
}

方法二:ApplicationListener<ContextRefreshedEvent>

@SuppressWarnings("rawtypes")
public class AppCacheContext implements ApplicationListener<ContextRefreshedEvent>{
	Logger logger = LoggerFactory.getLogger(AppCacheContext.class);
	@Autowired
	private static AppCacheContextDao cacheDao;
	
	@Override
	public void onApplicationEvent(ContextRefreshedEvent event) {
		ApplicationContext appcontext = event.getApplicationContext().getParent();
		if(appcontext != null){
			try {
				// 数据字典初始化
				initDicDetailCache();
				logger.info("----------------数据字典初始化完成----------------------");
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}
}

 

在ApplicationListener<ContextRefreshedEvent>使用时,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context (过程中) ,另一个就是我们自己的 projectName-servlet  context(作为root application context的子容器,初始完成之后)。这种情况下,就会造成onApplicationEvent方法被执行两次。根据自己的需求使用。

上述例子是初始化缓存,在完成之后执行。

解决办法可参考:https://my.oschina.net/u/2369810/blog/682899?nocache=1501657886165

 

今天关于在Mac上的Java Swing应用程序中使用现在不建议使用的com.apple.eawt.ApplicationAdapter的替代方法是什么?的分享就到这里,希望大家有所收获,若想了解更多关于Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?、Application application_1512618719369_147804 failed 2 times due to ApplicationMaster for attempt app、applicationId和packageName,以及在Manifest中使用${applicationId}写法、ApplicationListener ApplicationContextAware ApplicationEvent使用等相关知识,可以在本站进行查询。

本文标签: