java -jar .jar -c_如何从jar文件创建C库? - java

我有一个图书馆的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接口实现的怀疑 - java

interface Device { public void doIt(); } public class Electronic implements Device { public void doIt() { } } abstract class Phone1 extends Electronic { } abstract class Phone2 ext…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值