我有一个图书馆的jar文件,其中的内容是一堆.class文件
spl
├── acm
│ ├── graphics
│ │ ├── DrawLineElement.class
│ │ ├── EndRegionElement.class
│ │ ├── FinalPathElement.class
│ │ ├── G3DRect.class
│ │ ├── GArc.class
│ │ ├── GCanvas.class
│ │ ├── GCanvasListener.class
│ │ ├── GCompound.class
│ │ ├── GContainer.class
│ │ ├── GDimension.class
│ │ ├── GFillable.class
│ │ ├── GImage.class
│ │ ├── GIterator.class
│ │ ├── GLabel.class
│ │ ├── GLine.class
│ │ ├── GMath.class
│ │ ├── GMouseEvent.class
│ │ ├── GObject.class
│ │ ├── GObjectList.class
│ │ ├── GOval.class
│ │ ├── GPen.class
│ │ ├── GPoint.class
│ │ ├── GPolygon.class
│ │ ├── GRectangle.class
│ │ ├── GRect.class
│ │ ├── GResizable.class
│ │ ├── GRoundRect.class
│ │ ├── GScalable.class
│ │ ├── GTurtle.class
│ │ ├── PathElement.class
│ │ ├── PathList.class
│ │ ├── PathState.class
│ │ ├── PenImage.class
│ │ ├── SetColorElement.class
│ │ ├── SetLocationElement.class
│ │ ├── StartRegionElement.class
│ │ └── VertexList.class
│ ├── gui
│ │ ├── DoubleField.class
│ │ ├── HPanel.class
│ │ ├── IntField.class
│ │ ├── TableConstraints.class
│ │ ├── TableLayout.class
│ │ ├── TablePanel.class
│ │ └── VPanel.class
│ ├── io
│ │ ├── AWTBooleanInputDialog.class
│ │ ├── AWTDialog.class
│ │ ├── AWTDialogModel.class
│ │ ├── AWTIconCanvas.class
│ │ ├── AWTLineInputDialog.class
│ │ ├── AWTMessageCanvas.class
│ │ ├── AWTMessageDialog.class
│ │ ├── CharacterQueue.class
│ │ ├── ConsoleActionListener.class
│ │ ├── ConsoleInputMonitor.class
│ │ ├── ConsoleModel.class
│ │ ├── ConsoleOutputMonitor.class
│ │ ├── ConsoleReader.class
│ │ ├── ConsoleWriter.class
│ │ ├── DialogModel.class
│ │ ├── IOConsole.class
│ │ ├── IODialog.class
│ │ ├── IOModel.class
│ │ ├── StandardConsoleModel.class
│ │ ├── SwingDialogModel.class
│ │ ├── SystemConsole.class
│ │ └── SystemConsoleModel.class
│ ├── program
│ │ ├── AppletStarter.class
│ │ ├── CommandLineProgram.class
│ │ ├── CommandLineProgramLoader.class
│ │ ├── ConsoleProgram.class
│ │ ├── DefaultActionListener.class
│ │ ├── DialogProgram.class
│ │ ├── GObjectProgram.class
│ │ ├── GProgramListener.class
│ │ ├── GraphicsProgram.class
│ │ ├── OldStyleCheckBoxMenuItem.class
│ │ ├── OldStyleMenuItem.class
│ │ ├── ProgramActionListener.class
│ │ ├── ProgramAppletStub.class
│ │ ├── Program.class
│ │ ├── ProgramContentPaneLayout.class
│ │ ├── ProgramFrame.class
│ │ ├── ProgramMenuBar.class
│ │ ├── ProgramMenuBarListener.class
│ │ ├── ProgramStartupListener.class
│ │ └── ProgramWindowListener.class
│ └── util
│ ├── Animator.class
│ ├── Base64OutputStream.class
│ ├── BMPImageSaver.class
│ ├── CancelledException.class
│ ├── DirectGif89Frame.class
│ ├── DOSCommandLine.class
│ ├── EmptyContainer.class
│ ├── EPSImageSaver.class
│ ├── ErrorException.class
│ ├── ExportAppletDialog.class
│ ├── FileChooserFilter.class
│ ├── Gif89Encoder.class
│ ├── Gif89Frame.class
│ ├── GIF89ImageSaver.class
│ ├── Gif89Put.class
│ ├── GifColorTable.class
│ ├── GIFImageSaver.class
│ ├── GifPixelsEncoder.class
│ ├── HexByteOutputStream.class
│ ├── HexInputStream.class
│ ├── ImageSaver.class
│ ├── IndexGif89Frame.class
│ ├── JPEGImageSaver.class
│ ├── JPGImageSaver.class
│ ├── JTFTools.class
│ ├── MailStream.class
│ ├── MediaTools.class
│ ├── NullAudioClip.class
│ ├── NullOutputStream.class
│ ├── OptionTable.class
│ ├── PICImageSaver.class
│ ├── PICTImageSaver.class
│ ├── Platform.class
│ ├── PNGImageSaver.class
│ ├── ProgressBarDialog.class
│ ├── RandomGenerator.class
│ ├── ReverseColorMap.class
│ ├── ReverseColorMap$ColorRecord.class
│ ├── RTFImageSaver.class
│ ├── SecurityManagerThatFails.class
│ ├── SoundClip.class
│ ├── SoundPlayer.class
│ ├── SpeedBarListener.class
│ ├── SubmitOptions.class
│ ├── SunAudioClip.class
│ ├── SwingTimer.class
│ ├── ThreadedMenuAction.class
│ ├── TIFFImageSaver.class
│ ├── TIFImageSaver.class
│ └── TokenScanner.class
├── META-INF
│ └── MANIFEST.MF
└── stanford
└── spl
├── File_openFileDialog.class
├── G3DRect_create.class
├── G3DRect_setRaised.class
├── GArc_create.class
├── GArc_setFrameRectangle.class
├── GArc_setStartAngle.class
├── GArc_setSweepAngle.class
├── GButton.class
├── GButton_create.class
├── GCheckBox.class
├── GCheckBox_create.class
├── GCheckBox_isSelected.class
├── GCheckBox_setSelected.class
├── GChooser_addItem.class
├── GChooser.class
├── GChooser_create.class
├── GChooser_getSelectedItem.class
├── GChooser_setSelectedItem.class
├── GCompound_add.class
├── GCompound_create.class
├── GEvent_getNextEvent.class
├── GEvent_waitForEvent.class
├── GImage_create.class
├── GInteractor.class
├── GInteractor_getSize.class
├── GInteractor_setActionCommand.class
├── GLabel_create.class
├── GLabel_getFontAscent.class
├── GLabel_getFontDescent.class
├── GLabel_getGLabelSize.class
├── GLabel_setFont.class
├── GLabel_setLabel.class
├── GLine_create.class
├── GLine_setEndPoint.class
├── GLine_setStartPoint.class
├── GObject_contains.class
├── GObject_delete.class
├── GObject_getBounds.class
├── GObject_remove.class
├── GObject_rotate.class
├── GObject_scale.class
├── GObject_sendBackward.class
├── GObject_sendForward.class
├── GObject_sendToBack.class
├── GObject_sendToFront.class
├── GObject_setColor.class
├── GObject_setFillColor.class
├── GObject_setFilled.class
├── GObject_setLineWidth.class
├── GObject_setLocation.class
├── GObject_setSize.class
├── GObject_setVisible.class
├── GOval_create.class
├── GPolygon_addVertex.class
├── GPolygon_create.class
├── GRect_create.class
├── GRoundRect_create.class
├── GSlider.class
├── GSlider_create.class
├── GSlider_getValue.class
├── GSlider_setValue.class
├── GTextField.class
├── GTextField_create.class
├── GTextField_getText.class
├── GTextField_setText.class
├── GTimer.class
├── GTimer_create.class
├── GTimer_deleteTimer.class
├── GTimer_pause.class
├── GTimer_startTimer.class
├── GTimer_stopTimer.class
├── GWindow_addToRegion.class
├── GWindow_clear.class
├── GWindow_close.class
├── GWindow_create.class
├── GWindow_delete.class
├── GWindow_draw.class
├── GWindow_exitGraphics.class
├── GWindow_getScreenHeight.class
├── GWindow_getScreenWidth.class
├── GWindow_repaint.class
├── GWindow_requestFocus.class
├── GWindow_setRegionAlignment.class
├── GWindow_setResizable.class
├── GWindow_setTitle.class
├── GWindow_setVisible.class
├── JavaBackEnd.class
├── JBECanvas.class
├── JBECommand.class
├── JBEConsole.class
├── JBEConsole_clear.class
├── JBEConsole_getLine.class
├── JBEConsole_print.class
├── JBEConsole_println.class
├── JBEConsole_setFont.class
├── JBEConsole_setSize.class
├── JBEFileFilter.class
├── JBELabel.class
├── JBEWindow.class
├── Sound_create.class
├── Sound_delete.class
├── Sound_play.class
├── TopCompound.class
└── TopCompound_create.class
是否可以从该jar文件创建一个C库,以便我可以在我的C应用程序中包括,链接和使用它?如果是,那怎么办?
值得一提的是,我可以根据文档here访问该库的所有头文件。
提前致谢!
参考方案
您正在寻找Java本机接口(JNI):
https://en.wikipedia.org/wiki/Java_Native_Interface
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/
您需要将JNI调用包装到您构建的C库接口中。
特别要看一看允许C语言程序启动Java JVM并执行Java函数的调用API:
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/invocation.html
Maven将生成的文件夹(使用Maven插件)添加为源文件夹,IntelliJ无法识别 - java在我的maven Web项目中,cxf-codegen-plugin生成JAVA类并将其放入文件夹中 ${basedir}/src/generated 我在Java类中使用这些生成的类,src/main/java 我正在使用IntelliJ IDE,并且IntelliJ似乎无法识别${basedir}/src/generated 作为源文件夹(是正确的)。我…
子类可以创建抽象的超类类型的对象吗? - java我不确定我是否正确问了这个问题,但我是在作业中给我的ClassA是抽象的B类扩展了A类那么在ClassB的主要方法中,我们有:ClassA obj =新的ClassB();这里发生了什么,这样做的目的是什么? 参考方案 您永远无法创建来自抽象类的对象。曾经期。在这里,被分配了对象的变量是抽象类型,但是变量所指的对象本身不是,也永远不可能是。引用和引用变量之间…
使用JIT进行的优化是否只发生一次,并且可以永久保留,或者仅在运行的生命周期中保留? - java我在Just-in-time compilers上阅读过不同的文章,并且提到JIT将代码片段(热点)优化为直接的本机代码(机器代码)。我的问题是每当我运行.class file时,都会发生这种优化吗?另一方面,传统的compiled代码会一劳永逸地进行优化,而不仅仅是在一个execution中进行优化。在hot-spot optimization中如何“记住…
从对象转换为原始类 - java我将Entry类的实例存储在Object中。Entry newentry = new Entry(j, 0.0); Object test = newentry; 如何将test对象转换回Entry类以访问Entry类方法getValue()? 参考方案 输入它:Entry newentry = new Entry(j, 0.0); Entry test =…
对Java接口实现的怀疑 - javainterface Device { public void doIt(); } public class Electronic implements Device { public void doIt() { } } abstract class Phone1 extends Electronic { } abstract class Phone2 ext…