Java try catch循环在1个循环后未捕获
循环一次后,程序在新组件行抛出异常并退出。如何循环直到用户选择一个有效的文件Java try catch循环在1个循环后未捕获,java,try-catch,vlcj,Java,Try Catch,Vlcj,循环一次后,程序在新组件行抛出异常并退出。如何循环直到用户选择一个有效的文件 while(!next){ NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser()); try{ EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent(
while(!next){
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());
try{
EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
a.release();
next = true;
}
catch(Exception e){
next = false;
}
}
错误:
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class uk.co.caprica.vlcj.binding.LibVlc
at uk.co.caprica.vlcj.binding.LibVlcFactory.create(LibVlcFactory.java:158)
at uk.co.caprica.vlcj.player.MediaPlayerFactory.<init>(MediaPlayerFactory.java:236)
at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:278)
at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.<init>(EmbeddedMediaPlayerComponent.java:168)
at sv1.MainRun.try1(MainRun.java:107)
at sv1.MainRun.<init>(MainRun.java:82)
at sv1.Start.main(Start.java:7)
线程“main”java.lang.NoClassDefFoundError中出现异常:无法初始化类uk.co.caprica.vlcj.binding.LibVlc
位于uk.co.caprica.vlcj.binding.LibVlcFactory.create(LibVlcFactory.java:158)
在uk.co.caprica.vlcj.player.MediaPlayerFactory。(MediaPlayerFactory.java:236)
位于uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:278)
位于uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.(EmbeddedMediaPlayerComponent.java:168)
在sv1.MainRun.try1(MainRun.java:107)
在sv1.MainRun。(MainRun.java:82)
位于sv1.Start.main(Start.java:7)
这是可行的,但绝对不建议将没有错误的情况作为循环的终止条件。有没有办法在不崩溃的情况下检查这个?希望您正在使用的API包含一些有关函数或其他内容的信息。如果没有,你可能会做一些反思。任何事情都比用错误代替逻辑要好
更多信息:好吧,我会尝试移动try行
while(!next){
try{
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());
EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
a.release();
}
catch(Exception e){
}
}
参见以下修改
try
{
while(!next)
{
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());
EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
a.release();
next = true;
}
}
catch(Exception e){
next = false;
}
类路径上没有
LibVlc
绑定;在catch块中,如果要忽略错误并循环。。。。不知道为什么,那是什么意思?我怎样才能把它们送到那里。我知道,当用户为VLCJ选择正确的文件时,程序会工作。NoClassDefFoundError
是Error
的子类,而不是Exception
。因此,catch(异常e)
不会捕获它。但是,我不建议您更改捕获
,因为需要以某种方式解决此类错误。但是,我对EmbeddedMediaPlayerComponent
一无所知。(chrylis可能有答案。)@markg continue不起作用,不幸的是不起作用。ncdx2来自哪里?它工作得很好。我的意思是没有isOkeyDokey()函数。谢谢(我的程序是一个黑客工作,无论如何,所以多一点黑客是公正的课程)真的!我真的认为我需要删除答案。很乐意帮忙。我刚刚自学了一些东西catch(Someclass x)
将捕获作为Someclass
实例或其子类的任何Throwable
;无论Someclass
是异常
还是错误
,这都是正确的。
try
{
while(!next)
{
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), folderChooser());
EmbeddedMediaPlayerComponent a = new EmbeddedMediaPlayerComponent();
a.release();
next = true;
}
}
catch(Exception e){
next = false;
}