Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在可执行文件中包含pyinstaller的特定.jar文件?_Java_Python_Jar_Pyinstaller - Fatal编程技术网

Java 如何在可执行文件中包含pyinstaller的特定.jar文件?

Java 如何在可执行文件中包含pyinstaller的特定.jar文件?,java,python,jar,pyinstaller,Java,Python,Jar,Pyinstaller,当打包为exe时,如何强制pyinstaller使用特定的.jar文件 我正在尝试生成一个使用tabla pylib的可执行文件。这个库需要一个jar文件,tabla-1.0.1-jar-with-dependencies.jar,我把它放在file.py文件夹中。这些是在myfile.spec中的一些修改: # this is for pandas lib def get_pandas_path(): import pandas pandas_path = pandas.__p

当打包为exe时,如何强制pyinstaller使用特定的.jar文件

我正在尝试生成一个使用tabla pylib的可执行文件。这个库需要一个jar文件,tabla-1.0.1-jar-with-dependencies.jar,我把它放在file.py文件夹中。这些是在myfile.spec中的一些修改:

# this is for pandas lib
def get_pandas_path():
    import pandas
    pandas_path = pandas.__path__[0]
    return pandas_path

dict_tree = Tree(get_pandas_path(), prefix='pandas', excludes=["*.pyc"])
a.datas += dict_tree
a.binaries = filter(lambda x: 'pandas' not in x[0], a.binaries)

# this is for tabula-py
jar = 'tabula-1.0.1-jar-with-dependencies'
jar_path = 'C:\\Users\\jaquedeveloper\\Documents\\freelancer\\bot\\' + jar
coll = COLLECT(exe,
       a.binaries,
       a.zipfiles,
       a.datas,
       [(jar, jar_path, 'PKG')],
       strip=None,
       upx=True,
       name='test')
不过,错误依然存在。 当我从命令行运行代码时,tabla py中的函数read_pdf()(使用java jar)工作正常,非常完美

但是,当我使用pyinstaller spec命令生成可执行文件时,它无法执行此函数,错误如下:

无法访问jar文件C:\Users\jaquedeveloper\AppData\Local\Temp\u MEI58442\tabla\tabla-1.0.1-jar-with-dependencies.jar

文件不在此文件夹下,表格文件夹也不存在。 我将该文件放在可执行文件的同一文件夹下。如何强制脚本使用它? 如何将jar从特定路径导入到可执行文件,而不是使用_-MEI文件夹


这个问题也被报道了。

我不久前偶然发现了这个问题,因为我遇到了完全相同的问题。使用pyinstaller将.jar文件添加到“onefile”可执行文件中似乎将其放在了错误的临时目录下-在…AppData\Local\Temp\u MEI58442\tabla\tabla-1.0.1-jar-with-dependencies.jar下。 添加的文件似乎位于…AppData\Local\temp58442\tabla-1.0.1-jar-with-dependencies.jar中。这就是为什么在执行tabla.read\u pdf()命令时找不到它的原因。 作为一种解决方法,我使用pyinstaller(而不是onefile)生成了一个onedir输出,并使用jar文件添加了一个目录'tabla',它成功了

将其捆绑到单个文件中也有效: 它实际上都在pyinstaller文档()中。添加binary.jar文件时,您可以在Linux的“:”和“;”之后指定临时文件夹中文件的相对路径用于Win系统。仅使用“.”作为路径将文件放置在./Temp_MEI*/下。所以在我的Win案例中,它看起来是这样的:

pyinstaller --onefile --add-binary "C:/Users/Louis/Desktop/Github/pdf_reader/venv/Lib/site-packages/tabula/tabula-1.0.2-jar-with-dependencies.jar;./tabula/" myapp.py

这个解决方案来得有点晚,但我希望它仍能帮助某些人。

我不久前偶然发现了这个问题,因为我遇到了完全相同的问题。使用pyinstaller将.jar文件添加到“onefile”可执行文件中似乎将其放在了错误的临时目录下-在…AppData\Local\Temp\u MEI58442\tabla\tabla-1.0.1-jar-with-dependencies.jar下。 添加的文件似乎位于…AppData\Local\temp58442\tabla-1.0.1-jar-with-dependencies.jar中。这就是为什么在执行tabla.read\u pdf()命令时找不到它的原因。 作为一种解决方法,我使用pyinstaller(而不是onefile)生成了一个onedir输出,并使用jar文件添加了一个目录'tabla',它成功了

将其捆绑到单个文件中也有效: 它实际上都在pyinstaller文档()中。添加binary.jar文件时,您可以在Linux的“:”和“;”之后指定临时文件夹中文件的相对路径用于Win系统。仅使用“.”作为路径将文件放置在./Temp_MEI*/下。所以在我的Win案例中,它看起来是这样的:

pyinstaller --onefile --add-binary "C:/Users/Louis/Desktop/Github/pdf_reader/venv/Lib/site-packages/tabula/tabula-1.0.2-jar-with-dependencies.jar;./tabula/" myapp.py

这个解决方案来得有点晚,但我希望它仍然能帮助一些人。

嗨,Jaqueline。你找到这个问题的答案了吗?我也有一个类似的问题。运气不好,由于一个客户端请求,我最终没有开发该功能,并且没有做任何事情,因为他们。。。我已经生成了一个exe,但没有使用TABLA,因为不再需要过滤pdf文件。Ok。谢谢你让我知道。最后我用camelotpy而不是tabla重写了我的程序,这样没有管理员权限的用户就可以在没有Java.Hi Jaqueline的情况下运行它。你找到这个问题的答案了吗?我也有一个类似的问题。运气不好,由于一个客户端请求,我最终没有开发该功能,并且没有做任何事情,因为他们。。。我已经生成了一个exe,但没有使用TABLA,因为不再需要过滤pdf文件。Ok。谢谢你让我知道。最后我用camelotpy而不是tabla重写了我的程序,这样没有管理员权限的用户就可以在没有Java的情况下运行它。谢谢,我使用了相同的解决方案,没有在这里记录它。它肯定会帮助一些人。谢谢,我使用了相同的解决方案,但没有在这里记录。这肯定会有帮助。