Java 8和早期版本具有Java Web Start,它在我们更改应用程序时自动更新应用程序.Oracle建议用户迁移到jlink,因为这是新的Oracle技术.到目前为止,这听起来不错.这带来了许多好处:
问题:我找不到使用jlink自动更新的规范Java解决方案.
有人会认为Java Web Start可以继续使用,特别是如果随便读取这个文档.请注意Java Web Start继续显着列出的事实.但美中不足的是:Oracle正在弃用Java Web Start.它将在JDK 11中被删除.那么,正式的道路是什么呢?如果不这样做,人们会采用标准方式吗?
出于本问题的目的,以下内容超出范围:
我正在尝试从使用pyximport转换为使用distutils进行构建,而我却被它在放置.so文件的位置上的奇怪选择所困扰.因此,我决定用cython doc构建教程,但却发现它打印出一条消息说它的构建,但是没有.我在virtualenv,cython,python2.7等都安装在其中.
首先是基础知识:
$ cython --version
Cython version 0.21.2
$ cat setup.py
from distutils.core import setup
from Cython.Build import cythonize
print "hello build"
setup(
ext_modules = cythonize("helloworld.pyx")
)
$ cat helloworld.pyx
print "hello world"
Run Code Online (Sandbox Code Playgroud)
现在当我构建它时,除了输出中额外的src/src之外,一切看起来都很好:
$ python setup.py build_ext --inplace
hello build
Compiling helloworld.pyx because it changed.
Cythonizing helloworld.pyx
running build_ext
building 'src.helloworld' extension
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c helloworld.c -o build/temp.linux-x86_64-2.7/helloworld.o
creating /home/henry/Projects/eyeserver/dserver/src/src
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG …Run Code Online (Sandbox Code Playgroud) 我正在尝试在NixOS上进行cython调试.我可以在nix-shell中轻松安装cython(为简单起见而选择),如下所示:
$ nix-shell -p 'python27.withPackages( p: [ p.cython ])'
$ cat /nix/store/s0w3phb2saixi0a9bzk8pjbczjaz8d7r-python-2.7.14-env/bin/python
#! /nix/store/jgw8hxx7wzkyhb2dr9hwsd9h2caaasdc-bash-4.4-p12/bin/bash -e
export PYTHONHOME="/nix/store/s0w3phb2saixi0a9bzk8pjbczjaz8d7r-python-2.7.14-env"
export PYTHONNOUSERSITE="true"
exec "/nix/store/i3bx1iw2d0i3vh9sa1nf92ynlrw324w8-python-2.7.14/bin/python" "${extraFlagsArray[@]}" "$@"
Run Code Online (Sandbox Code Playgroud)
然后我们做一个普通的nix-shell只是python,看看我们得到了什么版本的python.
[henry@bollum:~/Projects/eyeserver/nixshell]$ nix-shell -p 'python27'
$ which python
/nix/store/i3bx1iw2d0i3vh9sa1nf92ynlrw324w8-python-2.7.14/bin/python
# ^^^^^^^
# non-debug
Run Code Online (Sandbox Code Playgroud)
一切都很好 - 我们在两种情况下都获得了非调试python.如果我们gdb它,我们得到(没有找到调试符号).见最后一行.
$ gdb
/nix/store/i3bx1iw2d0i3vh9sa1nf92ynlrw324w8-python-2.7.14/bin/python
GNU gdb (GDB) 8.0.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the …Run Code Online (Sandbox Code Playgroud) 我在使用Cython文件的virtualenv项目上使用Emacs,这意味着大多数文件不是我正在编辑的文件.特别是,我不想要项目中的用户子目录.到目前为止没有问题 - -/usr在.projectile文件中工作.现在我想要没有.c文件.这不起作用.文档说我应该把-*.c中.projectile文件.这不起作用.也不对-/foo/bar/*.c,也没有任何其他的排列我能想到的.此外,当.projectile文件中的项目具有斜杠时,该find命令会打印许多关于带斜杠的路径的警告.是否有Emacs Lisp方法做更好的事情?或者我只是错过了什么?
cython ×2
python ×2
virtualenv ×2
build ×1
deployment ×1
distutils ×1
emacs ×1
environment ×1
gdb ×1
ide ×1
java ×1
java-9 ×1
jlink ×1
nix ×1
nixos ×1
projectile ×1