您现在的位置是:首页 > 正文

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

2024-02-01 01:06:19阅读 2

我有一个图书馆的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…

网站文章

  • PLSQL类型相关操作

    1.写一个PLSQL程序,输出”hello world”字符串,语法:dbms_output.put_line('需要输出的字符串');begin --向SQLPLUS客户端工具输出字符串 dbms_output.put_line('hello 你好');end;注意: dbms_output是oracle中的一个输出对象 put_line是上述对象的一个方法,用于输出一个字

    2024-02-01 01:05:52
  • 《中软笔记》仿京东图片浏览

    《中软笔记》仿京东图片浏览

    本片文章的内容为仿京东商品图片浏览时放大的效果如图所示:效果分析:当鼠标移上左边时候该图片就会被放大,并且在右边显示;移动的时候还可以查看该物品的其他部位;鼠标移除就会被隐藏起来,不占物理空间。解决思路:1.写样式不管啥情况先写出来看看再去搞功能右边一个div,放入图片设置图片宽高,左边一个设置为右边div图片的 两倍大;2.写事件分析可知有三种事件(通过触发小盒子的事件,...

    2024-02-01 01:05:43
  • pycharm编写pyspark设置

    pycharm编写pyspark设置

    1、安装好pycharm后,打开pycharm创建项目2、创建项目,指定python位置(可用python虚拟环境)2.1、配置pycharm环境然后:apply==>ok2.2 、添加spark安装包下面的python文件夹中的两个pyspark的zip包3、配置流程4、提交代码到spark上运行...

    2024-02-01 01:05:36
  • Makefile经典教程

    支持原创,请移步陈浩大神博客:http://blog.csdn.net/haoel/article/details/2886这篇文章是对多篇博客的修改和整合,有意见可以私信我,谢谢!Make程序的命令行选项和参数Make命令参数的典型序列如下所示:make [-f makefile文件名][选项][宏定义][目标]这里用[]括起来的表示是可选

    2024-02-01 01:05:28
  • QQ网站登录的RSA加密传输缺陷分析

       QQ网站登录处没有使用https进行加密,而是采用了RSA非对称加密来保护传输过程中的密码以及敏感信息的安全性。 QQ是在javascript中实现整个过程的。这个想法非常新颖,但是也是存在严重缺陷的。如果被黑客利用,则可能被捕获明文密码。分析报告如下:Author: axisDate: 2007-11-23Team: http://www.ph4nt0m.org  (http://ps

    2024-02-01 01:04:59
  • 复旦大学计算机专业自考,2020年复旦大学自考专业一览表

    复旦大学计算机专业自考,2020年复旦大学自考专业一览表

    复旦大学(Fudan University)复旦大学是一所世界知名、国内顶尖的综合性研究型大学,2017年,学校入选“双一流”建设高校名单,确立了27个“双一流”建设学科,在QS世界大学排名中列全球第...

    2024-02-01 01:04:53
  • android自动打开键盘,Android弹出式对话框AlertDialog中的EditText自动打开软键盘

    private void confirmPhoneGurdPswd(final String guardPswd) {// 1.创建弹出式对话框final AlertDialog.Builder al...

    2024-02-01 01:04:46
  • 令考研人讨厌的10大行为排行榜!第一句话就忍不了...

    令考研人讨厌的10大行为排行榜!第一句话就忍不了...

    No.1老问他能考上吗?我每天早晨六点起床七点开始学习晚上十点离开自习室回宿舍每天被梦想叫醒晚上与知识共枕这些你都无法理解我能不能考上不需要向你汇报,好吗!No.2对他说“尽力就好”明明考试还没开始明...

    2024-02-01 01:04:17
  • Linux操作系统

    Linux操作系统

    第11讲SElinux管理(SELinux的上下文,端口号,布尔值)1 Linux系统的安全机制分为四层(1)Filesystem:chmod, chown, setfacl 基于文件系统的保障用户...

    2024-02-01 01:04:11
  • Linux部署lamp(centos 7),照做就行

    Linux部署lamp(centos 7),照做就行

    大家好,今天我们来分享一下Linux上部署lamplamp指的是Linux+Apache+MySQL数据库+php几者相结合的web框架结构虽然我在这之前,就写过有关于这方面的博客,但是那个不详细今天...

    2024-02-01 01:03:54