c - 在 Eclipse CDT 中调试启动时抛出 java.lang.IllegalArgumentException

标签 c eclipse java-native-interface eclipse-cdt

我正在 Windows XP 下使用 Eclipse CDT 和 MinGW 来开发一个小型 C 程序,将自身导出为 JNI 兼容的 DLL。

从 Java 调用中调试程序并不容易,因此我在项目中添加了“调试”配置以及测试某些功能的 main 方法。

当我启动调试时,我收到这个奇怪的 Java 错误:

An internal error occurred during: "Launching NuanceWrapper.exe".
java.lang.IllegalArgumentException

看起来很像是 Eclipse 内部问题。我在 .metadata 文件夹的 .log 文件中获得了异常的堆栈跟踪:

!ENTRY org.eclipse.core.jobs 4 2 2011-02-04 14:08:31.531
!MESSAGE An internal error occurred during: "Launching Wrapper.exe".
!STACK 0
java.lang.IllegalArgumentException
    at org.eclipse.osgi.framework.internal.core.PackageAdminImpl.getBundles(PackageAdminImpl.java:571)
    at org.eclipse.core.internal.runtime.InternalPlatform.getBundle(InternalPlatform.java:181)
    at org.eclipse.core.runtime.Platform.getBundle(Platform.java:1416)
    at org.springframework.ide.eclipse.core.BundleStateLocationVariableResolver.resolveValue(BundleStateLocationVariableResolver.java:32)
    at org.eclipse.core.internal.variables.DynamicVariable.getValue(DynamicVariable.java:54)
    at org.eclipse.cdt.internal.core.cdtvariables.EclipseVariablesVariableSupplier$EclipseVarMacro.loadValue(EclipseVariablesVariableSupplier.java:103)
    at org.eclipse.cdt.internal.core.cdtvariables.EclipseVariablesVariableSupplier$EclipseVarMacro.getStringValue(EclipseVariablesVariableSupplier.java:90)
    at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.getLaunchEnvironment(LaunchUtils.java:385)
    at org.eclipse.cdt.dsf.gdb.launching.LaunchUtils.getGDBVersion(LaunchUtils.java:281)
    at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.getGDBVersion(GdbLaunchDelegate.java:243)
    at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugSession(GdbLaunchDelegate.java:129)
    at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launchDebugger(GdbLaunchDelegate.java:83)
    at org.eclipse.cdt.dsf.gdb.launching.GdbLaunchDelegate.launch(GdbLaunchDelegate.java:72)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:923)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1126)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

知道可能是什么问题吗?我真的需要这个调试功能来了解我的代码中的问题。

感谢您的回答。

最佳答案

我查看了您的堆栈跟踪的不同文件的源代码,这似乎是您的 CDT 项目配置的问题。您应该检查此处的设置并尝试更改它们。

CDT 构建变量之一似乎是错误的。在 LaunchUtils.java第 390 行,var.getStringValue() 导致了该问题,因为在包含名称和关联值的变量 (var) 中,该值为 null。

希望这有帮助。

关于c - 在 Eclipse CDT 中调试启动时抛出 java.lang.IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4897720/

相关文章:

eclipse - Eclipse 代码样式格式化程序可以对齐赋值语句吗?

java - 如何使用 JNI 在 C++ 中返回 java 字符串

C中字符数组赋值错误

c - 在 C 中只有一个变量名转换为 (void) 的语句

java - 带有 FreeTTS 的 MBROLA 语音 - Windows

java - 在 Eclipse RCP 部件中创建 NatTable 对象时出现 NullPointerException

Javah 仍然无法在 OSX/Android Studio 中找到类文件

java - 如何在 GetMethodID 方法签名参数中指定类的数组?

c - 如何处理 C 中的堆栈数组分配失败?

c - 在 C 中将按位值显示为整数