打包黑莓 OAuth 应用程序抛出错误
Posted
技术标签:
【中文标题】打包黑莓 OAuth 应用程序抛出错误【英文标题】:Packaging Blackberry OAuth app throwing error 【发布时间】:2012-05-20 03:32:03 【问题描述】:我正在创建一个将链接发布到 Twitter 上的应用程序。以下代码拒绝为我打包,抛出如下错误:
错误:无法运行程序“jar”:CreateProcess error=2,系统找不到指定的文件
代码如下:
public class ShowAuthBrowser extends MainScreen implements OAuthDialogListener
private final String CONSUMER_KEY = "<Consumer>";
private final String CONSUMER_SECRET = "<Secret>";
private LabelField _labelStutus;
private OAuthDialogWrapper pageWrapper = null;
public StoreToken _tokenValue;
public BrowserField b = new BrowserField();
Manager _authManager;
Manager _pinManager;
ButtonField authButton;
TextField authPin;
public ShowAuthBrowser()
_authManager = new VerticalFieldManager(NO_VERTICAL_SCROLL |
NO_VERTICAL_SCROLLBAR);
_pinManager = new HorizontalFieldManager(NO_VERTICAL_SCROLL |
NO_VERTICAL_SCROLLBAR);
authButton = new ButtonField("OK");
authPin = new TextField(Field.EDITABLE);
_authManager.add(_labelStutus );
_authManager.add(b);
_pinManager.add(authButton);
_pinManager.add(authPin);
pageWrapper = new BrowserFieldOAuthDialogWrapper(b,CONSUMER_KEY,
CONSUMER_SECRET,null,this);
pageWrapper.setOAuthListener(this);
add(_pinManager);
add(_authManager);
authButton.setChangeListener( new FieldChangeListener( )
public void fieldChanged( Field field, int context )
if( field == authButton )
doAuth(authPin.getText());
);
public void doAuth( String pin )
try
if ( pin == null )
pageWrapper.login();
else
this.deleteAll();
add(b);
pageWrapper.login( pin );
catch ( Exception e )
final String message = "Error logging into Twitter: " +
e.getMessage();
Dialog.alert( message );
public void onAccessDenied(String response )
updateScreenLog( "Access denied! -> " + response );
public void onAuthorize(final Token token)
final Token myToken = token;
_tokenValue = StoreToken.fetch();
_tokenValue.token = myToken.getToken();
_tokenValue.secret = myToken.getSecret();
_tokenValue.userId = myToken.getUserId();
_tokenValue.username = myToken.getUsername();
_tokenValue.save();
UiApplication.getUiApplication().invokeLater( new Runnable()
public void run()
deleteAll();
Credential c = new Credential(CONSUMER_KEY,
CONSUMER_SECRET,
myToken);
PostTweet tw = new PostTweet();
String message="Testing BB App";
boolean done=false;
done=tw.doTweet(message, c);
if(done == true)
Dialog.alert( "Tweet succusfully..." );
close();
);
public void onFail(String arg0, String arg1)
updateScreenLog("Error authenticating user! -> " + arg0 + ", " + arg1);
private void updateScreenLog( final String message )
UiApplication.getUiApplication().invokeLater( new Runnable()
public void run()
_labelStutus.setText( message );
);
奇怪的是,如果我删除以下行,它会很好地打包:
authButton.setChangeListener( new FieldChangeListener( )
public void fieldChanged( Field field, int context )
if( field == authButton )
doAuth(authPin.getText());
);
任何帮助将不胜感激,因为我确实需要附加到此屏幕的字段侦听器。
使用authButton.setChangeListener(null)
之类的代码,它确实可以成功打包,但是我确实需要带有FieldChangeListener
的代码才能做某事。
【问题讨论】:
尝试使用authButton.setChangeListener(null)
之类的代码进行打包 - 只是为了确保不是对 FieldChangeListener 的引用导致了麻烦
我在其他类的其他地方有字段更改侦听器,它们构建和打包都很好。
过去曾问过几个类似的问题:***.com/questions/7804602/… 和 ***.com/questions/7291442/… - 都提到 Cannot run program "jar": CreateProcess error=2
我已经看过这两个了,但是谢谢。 Blackberry 项目是否有大小上限?
@ScottBoettger,我认为有。工具链试图将其分解为几个 COD 文件,当我将程序变小时,我遇到了一些问题。
【参考方案1】:
确保您的 java bin 路径已在环境变量中设置。
http://docs.oracle.com/javase/tutorial/essential/environment/paths.html
并查看以下网站中的最后 3 个帖子:
http://supportforums.blackberry.com/t5/Java-Development/I-O-Error-Cannot-run-program-quot-jar-quot-CreateProcess-error-2/td-p/522638
还要确保计算机上安装了 Java® 软件开发工具包 (Java SDK/JDK),并且使用了正确版本的 Java SDK。
http://supportforums.blackberry.com/t5/Java-Development/I-O-Error-CreateProcess/ta-p/445949
正如下面的 Scott Boettger 评论中所述,这篇文章也可能会有所帮助: http://supportforums.blackberry.com/t5/Java-Development/why-cause-more-then-100-compiled-classes-packaging-I-O-error/m-p/520282
【讨论】:
我确实安装了 SDK。但是你的帖子把我带到了这个帖子:supportforums.blackberry.com/t5/Java-Development/…。我确实有一个相当大的项目,其中包含很多已编译的类。以上是关于打包黑莓 OAuth 应用程序抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
通过 Oauth 进行身份验证时 SSL 抛出错误 185090050